如果域名已经申请好,并且解析OK了,你会发现地址是http://开头的,浏览器会打上一个不安全标签,这个时候就需要申请一个ssl证书了。我是在freessl官网上申请的免费证书。
品牌选择TrustAsia,证书类型RSA,文件验证,然后浏览器生成fileauth.txt文件。把这个文件上传到自己的服务器,freessl网站需要通过访问/.well-known/pki-validation/fileauth.txt这个路径来访问你的fileauth.txt文件。其实这个文件放在哪里都一样的,我们是通过tornado来解析。
在tornado的headers列表里面添加上:
(r"/.well-known/pki-validation/fileauth.txt", tornado.web.StaticFileHandler,dict(url=os.path.join(os.path.dirname(__file__), "your_save_path/fileauth.txt"), permanent=False)),
接下来重新启动supervisor:
supervisorctl -c /etc/supervisord.conf start all
supervisorctl -c /etc/supervisord.conf stop all
然后在freessl官网的网页上点击验证,正常情况下验证都会通过,验证通过就可以下载freessl提供的密匙,一个pem文件,一个key文件。下载后就上传到自己的服务器,然后用nginx配置。
在nginx的server里添加如下代码:
listen 443 ssl;
server_name localhost;
ssl_certificate "/your_save_path/chain.pem";
ssl_certificate_key "/your_save_path/private.key";
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
因为ssl是使用443端口,所以CentOS 7记得防火墙放行443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
systemctl restart firewalld
nginx里也可以另起一个server,将之前的80端口重定向到443端口:
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
rewrite ^(.*)$ https://$host$1 permanent;
}
最后输入你的网址,看http是否已经变成了https,如果https了,说明你成功了。
需要注意的是完成ssl后tornado代码里:
(r"/.well-known/pki-validation/fileauth.txt", tornado.web.StaticFileHandler,dict(url=os.path.join(os.path.dirname(__file__), "your_save_path/fileauth.txt"), permanent=False)),
这一句还请删掉,不然你懂的…
请经常关注tornado的日志文件,你会发现经常会有人来抓取你的密文,像下面这种,一天好多条…
[W 180830 07:28:33 web:2106] 404 GET /.well-known/security.txt (127.0.0.1) 1.50ms