这是我参与更文挑战的第1天,活动详情查看: 更文挑战
如何获取ssl证书
我域名是从阿里云买的,所以就可以从阿里云申请免费的ssl证书。登录阿里云直接搜ssl然后,去购买页面根据下图的选择方式就能获取免费的ssl证书
如何通过申请和下载
现在阿里云很贴心,按照第一步的步骤购买了以后,就去ssl证书控制台,然后按照要求填写申请证书的必填信息。
填写完了以后就是验证,验证的话就需要按照阿里云给信息去要申请的域名,解析一个 TXT记录,前面说过阿里云现在,贼鸡儿贴心。你填完信息以后,点击验证的时候。他会帮你去申请的域名添加一条 TXT记录并且域名解析。下一步,就是等签发证书,我在网上看到的教程基本上都是说一个半天才能签发。但我验证完以后马上就验证通过了。然后就点击下载证书,选择在 nginx 上安装的证书。现在完成以后就会看到两个文件一个是 xxx.pem (这个就是CA签名好的证书)xxx.key (证书公钥) 。
如何将下载好的证书上传到阿里云ECS服务器中
我用的是macOS,所以在命令行终端自带shell的sftp功能进行上传,可以根据下图进行连接
或者直接在命令行终端中直接敲命令 : sftp root@xxx.xxxx.xx.xx (服务器公网IP地址),然后就会让我们输入服务器登录密码,输入完成后就可以使用sftp往服务器上传文件了,可以使用sftp的 put 指令进行上传。上传前,最好先在服务器中 /etc/nginx 中新建一个 cert 文件夹。
// put 要上传的证书文件地址 上传到服务器的文件夹地址
put /Usr/Desktop/4465440_www.xinxinsteel.cn.pem /etc/nginx/cert
如何在云服务器上的nginx中安装ssl证书:
- 监听443端口
server {
listen 443 ssl; // 这个是新版的nginx(1.16.x)推荐的监听方式
#1.16.x之前版本的方式
# ssl on;
#服务器名称就填要使用https证书的 域名地址
server_name www.xinxinsteel.cn;
# 证书文件地址
ssl_certificate /etc/nginx/cert/4465440_www.xinxinsteel.cn.pem;
ssl_certificate_key /etc/nginx/cert/4465440_www.xinxinsteel.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
add_header 'Access-Control-Allow-Origin' '*';
proxy_pass https://sincerestainless.gitee.io/index/;
}
}
- 监听80端口
server {
listen 80;
server_name www.xinxinsteel.cn;
# http请求转换到https
rewrite ^(.*) https://$server_name$1 permanent;
location / {
#root /usr/share/nginx/html/xinxinweb/xinxin;
#index welcome.html welcome.htm;
#add_header 'Access-Control-Allow-Origin' '*';
}
}
注意: 我们前面在nginx中监听了 80 443端口,一定要去云服务器的安全组设置白名单,相当于在公网ip开放 80 和 443 端口,不然是无法访问网站页面的。
最后要测试一下刚才的nginx配置对不对
- nginx -t
- 如果测试没问题,就可以直接重启nginx服务器 nginx -s reload
- 去浏览器试一试,你就发现网站地址自动使用了https协议