这篇文章是在开发中的实际配置过程,写篇文章方便大家学习,自己也加深记忆。废话少说直接开始吧。
获取SSl证书
SSL 证书可以去各大云服务商申请免费的,当然也可以是付费的,这里我们使用腾讯云申请。地址: 腾讯云 SSL证书。
腾讯的文档都还蛮全的,按照一步一步走准没错,具体步骤不在赘述啦,具体可以看这里:域名型(DV)免费 SSL 证书申请流程
放开 443端口
去云服务商放开443端口的限制,这个dddd,不会的同学,肯定不会看到这篇文章。
配置Nginx
下载证书
步骤如下:
-
先去 我的证书。
-
选择需要下载的Nginx证书的 SSL 证书并单击下载。如下图所示:
-
在弹出的 “证书下载” 窗口中,单击下载,即可下载根证书。如下图所示:
上传证书
这里上传到 /ssl/nginx路径
配置nginx.conf
查看Nginx是否按照SSL模块
Nginx目录/sbin/nginx -V
显示了 configure arguments: --prefix=Nginx目录 --with-http_stub_status_module -- with-http_ssl_module 就算安装了SSL 模块,可以跳过一下步骤。
没有显示的同学请查看这篇文章nginx添加ssl模块。完成后就可以进行后面的步骤啦。
添加如下配置:
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name XXX.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate /ssl/nginx/XXX.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /ssl/nginx/XXX.key;
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
}
修改配置文件后,使用以下命令测试一下,有错误的同学仔细检查一下之前的步骤。
nginx -t
成功后重新加载一下Ningx配置文件:
nginx -s reload
重载成功,即可使用 https://XXX.com 进行访问。
HTTP 自动跳转 HTTPS 的安全配置(可选)
Nginx 支持 rewrite 功能。若您在编译时没有去掉 pcre,您可在 HTTP 的 server 中增加
return 301 https://$host$request_uri;,即可将默认80端口的请求重定向为 HTTPS。修改如下内容:
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name XXX.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate /ssl/nginx/XXX.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /ssl/nginx/XXX.key;
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
}
server {
listen 80;
#请填写绑定证书的域名
server_name XXX.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
修改配置文件后,使用以下命令测试一下,有错误的同学仔细检查一下之前的步骤。
nginx -t
成功后重新加载一下Ningx配置文件:
nginx -s reload
重载成功,即可使用 http://XXX.com 进行访问。
修改远程资源
Http转Https访问
以上步骤之后,可能会有一些同学,没有正常访问。原因大部分是使用了远程资源,而远程资源不支持Https访问。
查看浏览器日志显示如下异常:
这里是有一些远程资源使用的Http协议进行访问,而Https协议不支持直接访问Http协议。
这里建议添加在Html添加如下标签,Http自动使用Https访问。
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
添加成功,即可刷新页面进行访问。还没有成功的同学可能是远程资源不支持Https访问,请看下一步。
七牛云添加Https配置
因为笔者使用的是七牛云的云对象存储服务这里使用七牛云举例,于其他云服务商大差不大。
获取SSL证书
七牛云配置Https 也需要SSL证书,可以采取上面的步骤获取SSL证书。
七牛云目前支持PEM格式(后续支持其他格式可以跳过格式转换步骤),在腾讯云获取的证书需要先转以下格式。地址:myssl.com/cert_conver…
格式转换步骤如下:
-
先下载 JKS格式,和以上的下载步骤一样,选择
Tomcat(JKS格式)就行。 -
原格式选择 “JKS”,目标格式选择“PEM”
-
点击上传文件选择.jks文件,如下图所示:
-
原文件密码在keystorePass.txt文件中粘上来就行。
-
解压密码是下载的zip包的密码,随意就好。
也可以使用七牛云获取SSL证书。这里就不赘述啦。参考developer.qiniu.com/ssl/3666/ss…(UI可能一些不对,功能大差不大)
配置
这里就使用我们在腾讯云获取的SSL证书
-
打开我的证书
-
选择需要部署的证书点击部署CDN。如下图所示:
-
选择需要的域名点击部署,这里已经部署了就不往下展示了。如下图所示:
完成以上配置就完成了啦。
总结
好了整篇文章就结束啦,之后你的网站就可以使用HTTPS进行访问啦。这篇文章是笔者在项目中的整体经历,也算是第一次在掘金提交文章,可以有些说的没那么明白的地方,有什么不懂得的可以在评论区留言或者私信啦,觉得我写的还行的可以给我点个赞或者一键三连,谢谢大家啦。