步骤1:申请一张测试试用证书
步骤2:下载证书并上传到服务器
步骤3:在服务器配置证书
步骤4(可选):配置HTTP强制跳转HTTPS
步骤5:开放HTTPS访问及验证
下面开始我们的配置
打开阿里云控制台官网,搜索SSL,点击进入SSL证书(应用安全)
点击立即购买,会弹出右侧购买栏,选择DV单域名证书【免费试用】,点击下方购买
由于该证书限制只能有一个,所以接下来的步骤只能靠你自己了。根据提示完成购买即可。
购买完成后,会提示你是否进行申请审核,根据提示信息完成审核,并自动解析DNS,下图是解析后的DNS记录

[root@clover ~]# cd /usr/local/application/server/nginx/conf/
# 新建cert文件夹,用于存放证书文件
[root@clover conf]# mkdir cert
# 进入cert目录
[root@clover conf]# cd cert
打开xftp,将下载好的证书文件上传到cert文件夹中,我在上传前把文件名称改成了我设定的了
进行Nginx配置文件的配置
#退到conf文件夹中
[root@clover cert]# cd ..
[root@clover conf]#
#建议先copy一份原来的nginx.conf文件
[root@clover conf]# cp nginx.conf ./ nginx-copy.conf
#修改nginx.conf配置文件
[root@clover conf]# vim nginx.conf
#按i键进入编辑模式。
#在配置文件中定位到HTTP协议代码片段(http{}),并在HTTP协议代码里面添加以下server配置(如果server配置已存在,按照以下注释内容修改相应配置即可)。
以下属性中,以ssl开头的属性表示与证书配置有关。
#server 是在http {} 片段里面的哦!
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
#需要将clover.fit替换成证书绑定的域名(你的域名)。
server_name clover.fit;
# dist是我配置的静态资源访问的路径,如果你没有修改,你的应该是html文件夹
root dist;
index index.html index.htm;
#需要将clover.pem替换成已上传的证书文件的名称(就是你上传的那两个文件名称)。
ssl_certificate cert/clover.pem;
#需要将clover.key替换成已上传的证书密钥文件的名称(同上)。
ssl_certificate_key cert/clover.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root dist; #站点目录。
index index.html index.htm;
}
}
如果您希望所有的HTTP访问自动跳转到HTTPS页面,则可以在需要跳转的HTTP站点下添加以下rewrite语句。
server {
listen 80;
#需要将clover替换成证书绑定的域名。
server_name clover.fit;
# 将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
最后,贴上http片段中的完整代码
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
#需要将clover.fit替换成证书绑定的域名。
server_name clover.fit;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}
server {
listen 443 ssl;
server_name www.clover.fit;
root dist;
index index.html index.htm;
ssl_certificate cert/clover.pem;
ssl_certificate_key cert/clover.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root dist;
index index.html index.htm;
}
}
}
修改完成后,按Esc 键、输入 :wq!并按Enter 键,保存修改后的配置文件并退出编辑模式。
执行以下命令,重启Nginx服务。
[root@clover conf]# cd ../
[root@clover nginx]# cd sbin/ #进入Nginx服务的可执行目录。
[root@clover sbin]# ./nginx -s reload #重新载入配置文件。
#查看nginx是否正在运行,若正在运行,则kill掉
[root@clover sbin]# ps -ef | grep nginx
root 18222 1 0 14:53 ? 00:00:00 nginx: master process ./nginx
nobody 23728 18222 0 16:39 ? 00:00:00 nginx: worker process
root 23737 22684 0 16:39 pts/3 00:00:00 grep --color=auto nginx
#此时表示nginx正在运行,使用kill 命令kill掉
[root@clover sbin]# kill -9 18222
[root@clover sbin]# kill -9 23728
#再次查看
[root@clover sbin]# ps -ef | grep nginx
root 23737 22684 0 16:39 pts/3 00:00:00 grep --color=auto nginx
#使用./nginx 启动nginx
[root@clover sbin]# ./nginx
注意:
如果重启Nginx服务时收到报错,您可以使用以下方法进行排查:
收到the "ssl" parameter requires ngx_http_ssl_module
报错:您需要重新编译Nginx并在编译安装的时候加上--with-http_ssl_module
配置。
收到"/cert/3970497_pic.certificatestests.com.pem":BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/cert/3970497_pic.certificatestests.com.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
报错:您需要去掉证书相对路径最前面的/
。例如,您需要去掉/cert/cert-file-name.pem
最前面的/
,使用正确的相对路径cert/cert-file-name.pem
。
验证证书是否安装成功。
在验证的过程中,你可能会遇到无法访问,此时,你需要想想,你的服务器安全组是否开放了80和443端口,如果没有开放,需要去服务器控制台进行开发。
此时,如果你的服务器(我的是CentOS7.6)防火墙开启了,也要放开80和443端口,如果没开启,就不用看这一步
#查看防火墙状态
[root@clover root]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-09-22 19:51:54 CST; 2 weeks 1 days ago
Docs: man:firewalld(1)
Main PID: 12517 (firewalld)
CGroup: /system.slice/firewalld.service
└─12517 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Sep 22 19:51:53 clover systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 22 19:51:54 clover systemd[1]: Started firewalld - dynamic firewall daemon.
#此时就代表防火墙开启了
#查看已开放的端口
[root@clover root]# firewall-cmd --list-ports
80/tcp 8080/tcp 3306/tcp 22/tcp 6379/tcp 1001/tcp 1002/tcp 443/tcp
#我的80和443都已经开放了,如果你的没有开放,执行下面的命令
[root@clover root]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@clover root]# firewall-cmd --zone=public --add-port=443/tcp --permanent
#重新载入防火墙,2种方式
[root@clover root]# firewall-cmd --reload
[root@clover root]# systemctl restart firewalld
此时,再进行验证
证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。
https://www.clover.fit #需要将www.clover.fit替换成证书绑定的域名。
如果网页地址栏出现小锁标志,表示证书已经安装成功。
不同类型证书安装成功后的效果不同,具体如下:
异常现象 | 可能原因 | 处理方法 |
---|---|---|
通过HTTPS无法正常访问您的网站。 | 安装证书的Nginx服务器的443端口未开放或被其他工具拦截。 | 1.如果您使用的是阿里云ECS服务器,请前往ECS管理控制台的安全组页面,配置开放443端口。关于如何配置安全组,请参见添加安全组规则。 2.如果您使用的不是阿里云ECS服务器,请参照对应的服务器安全设置指南,配置开放服务器的443端口。 |
收到网站提示“您与网站之间的连接未完全安全”。 | 您的网站代码中调用的是HTTP协议。 | 您需要在网站代码中把HTTP协议修改为HTTPS协议。 |
收到网站提示“该网站未根据工信部相关法律进行备案”。 | 1.您的网站未完成备案,未在接入商处完成备案接入。 2.您的网站内容与备案信息不符、备案信息不准确、网站存在不适宜传播的内容等。 |
1.如果您使用的是阿里ICP云备案系统,请前往阿里云备案系统进行网站备案。 2.如果您使用的不是阿里云ICP备案系统,请前往备案服务商的系统进行网站备案。 |
到这里,Nginx配置SSL证书就结束了!