提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- `提示:我用的是阿里云的产品,就以阿里云进行的:`
- 一、下载SSL证书
- 二、安装SSL证书
前言
提示:我用的是阿里云的产品,就以阿里云进行的:
一、下载SSL证书
进入数字证书管理服务/SSL 证书 /免费证书 点击下载
服务器类型选择Nginx 点击下载
二、安装SSL证书
将下载好的证书压缩包进行解压:会有下图两个文件
将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)
编辑Nginx配置文件nginx.conf,修改与证书相关的配置
vim /usr/local/nginx/conf/nginx.conf
按i键进入编辑模式
在nginx.conf中找到到server属性配置,把前面#删除
修改内容如下:
server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;
#填写证书绑定的域名
server_name <yourdomain>;
#填写证书文件名称
ssl_certificate cert/<cert-file-name>.pem;
#填写证书私钥文件名称
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#默认加密套件
ssl_ciphers HIGH:!aNULL:!MD5;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
配置HTTP请求自动跳转HTTPS
server {
listen 80;
#填写证书绑定的域名
server_name <yourdomain>;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
然后重启Nginx服务器就可以了
重启如果出现错误:
nginx: [emerg] cannot load certificate "/usr/local/nginx/conf/cert/www.xxx.zxxx.key": PEM_read_bio_
缺少http_ssl_module 模块
解决办法:
进入到nginx的源码安装包的config,注意不是/usr/local/nginx,是带有版本号的
具体的步骤:
1 查看版本
[root@xxxxx sbin]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.19.9
built by gcc 10.2.1 20200825 (Alibaba 10.2.1-3.5 2.32) (GCC)
configure arguments:
可以看到configure arguments 没有任何的配置
进入到Nginx源码的config目录
[root@xxxxx sbin]# cd /usr/local/nginx/nginx-1.19.9/
[root@xxxxx nginx-1.19.9]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
然后make
[root@xxxxx nginx-1.19.9]# make
停止nginx
[root@xxxxx nginx-1.19.9]# /usr/local/nginx/sbin/nginx -s stop
在查看是否成功:
[root@xxxxx nginx-1.19.9]# /usr/local/nginx/sbin/nginx -V
可以看到configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 已经有http_ssl_module 模块了
[root@xxxxx nginx-1.19.9]# cd /usr/local/sbin
[root@xxxxx nginx-1.19.9]# ./nginx
然后启动Nginx 访问 就可以看到成功了 有锁了