为站点添加SSL证书
2023年11月14日 2024年2月13日
说明
目前VPS只能响应HTTP请求. HTTP与HTTPS的区别, 在于HTTPS支持加密和验证
HTTPS使用TLS(SSL)来加密HTTP请求和响应, 并对这些请求和响应进行数字签名
我是在腾讯云购买的域名, 腾讯云为个人用户提供50张免费DV单域名证书, 每年购买一次, 不花钱但得走个流程
阿里云好像也有免费证书
付费证书选择
申请免费证书
我的证书 > 申请免费证书
- | |
---|---|
证书绑定域名 | 填写购买域名 |
域名验证方式 | 选择 手动DNS验证 |
申请邮箱 | |
算法选择 | 使用推荐算法 RSA |
-
域名验证
我的域名 > 解析 > 添加记录
将提供的信息拷贝到此处, 添加成功后回到申请证书页面, 继续下一步骤
整个提交后, 不一会就可以收到站内信告知证书审核通过
-
下载证书
我的证书 > 下载
我选择Nginx
-
本地解压得到4个文件, 拷贝(.crt)和(.key)后缀的文件
-
在VPS创建文件夹
/usr/local/cert
, 存放SSL证书文件1sudo -i 2mkdir /usr/local/cert 3cd /usr/local/cert
建议备份证书文本
使用SSL证书
-
修改站点信息
1vi /etc/nginx/sites-available/blog
1server { 2 listen 443 ssl; 3 server_name <域名>; 4 root /usr/local/var/<项目名称>; 5 ssl_certificate /usr/local/cert/<证书名>.crt; 6 ssl_certificate_key /usr/local/cert/<证书名>.key; 7 ssl_session_timeout 5m; 8 ssl_protocols TLSv1.2 TLSv1.3; 9 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 10 ssl_prefer_server_ciphers on; 11 12 location / { 13 } 14}
-
验证配置
1nginx -t
-
更新站点信息
1nginx -s reload
-
查看
此时只响应HTTPS请求https://<域名>
HTTP自动跳转HTTPS
-
修改站点信息
1vi /etc/nginx/sites-available/blog
1server { 2 listen 443 ssl; 3 server_name <域名>; 4 root /usr/local/var/<项目名称>; 5 ssl_certificate /usr/local/cert/<证书名>.crt; 6 ssl_certificate_key /usr/local/cert/<证书名>.key; 7 ssl_session_timeout 5m; 8 ssl_protocols TLSv1.2 TLSv1.3; 9 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 10 ssl_prefer_server_ciphers on; 11 12 location / { 13 } 14} 15 16server { 17 listen 80; 18 server_name <域名>; 19 rewrite ^/(.*)$ https://域名:443/$1 permanent; 20}
-
更新站点信息
1nginx -s reload
-
关闭HTTP端口
1ufw delete allow http
www子域重定向
-
修改站点信息
1vi /etc/nginx/sites-available/blog
1server { 2 listen 443 ssl; 3 server_name <域名>; 4 root /usr/local/var/<项目名称>; 5 ssl_certificate /usr/local/cert/<证书名>.crt; 6 ssl_certificate_key /usr/local/cert/<证书名>.key; 7 ssl_session_timeout 5m; 8 ssl_protocols TLSv1.2 TLSv1.3; 9 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 10 ssl_prefer_server_ciphers on; 11 12 location / { 13 if ($host = 'www.<域名>') { 14 rewrite ^/(.*)$ https://<域名>:443/$1 permanent; 15 } 16 } 17} 18 19server { 20 listen 80; 21 server_name <域名>; 22 rewrite ^/(.*)$ https://<域名>:443/$1 permanent; 23}
-
更新站点信息
1nginx -s reload
书签
- |
---|
证书安装 |
Nginx服务器SSL证书安装 |
Nginx重定向 |
把站点托管到Cloudflare |