SSL证书安装

SSL免费证书安装 -- 前言 -- 为什么要安装SSL证书使用HTTPS协议来访问我们的网站? >s 近年来越来越多的网站开始使用HTTPS协议,很多浏览器对不使用HTTPS协议的网站会提示不安全,甚至谷歌、百度等搜索引擎巨头对HTTPS网站会给到更好的排名。浏览器给战斗打上不安全的标记,还会给用户带来一种很不好的用户体验,试想你自己在访问一个站点的时候,如果提示此站点不安全,你还会放心在这个站内做操作吗?是不是会担心留下信息会被泄露呢? >s HTTPS的几个特点 1.HTTPS是使用加密传输协议,比HTTP明文传输更加安全。 2.HTTPS可以防止流量劫持和中间人攻击,可以防止假冒钓鱼网站。 3.百度谷歌量大浏览器鼓励网站HTTPS加密,并给予排名优待。 4.网站HTTPS成本降低。可使用免费HTTPS证书,如下文所属。 5.网民安全意识提高,对HTTPS站点信任度更高。 1.certbot 安装 -- 使用`yum`指令安装certbot. ``` yum install python2-certbot-nginx ``` 安装过程中出现如下错误 ``` error: python-urllib3-1.10.2-7.1.al7.noarch: install failed ``` 为urllib3依赖安装失败。 需要重新安装 ``` pip uninstall urllib3 #卸载依赖。 pip install urllib3 #重新安装依赖。 ``` 执行`certbot --version`查看是否安装成功。 若安装成功,会显示其版本号。 若出现以下错误 ``` pkg_resources.DistributionNotFound: The 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' distribution was not found and is required by requests ``` 需要重新安装依赖并指定版本 ``` pip install --upgrade --force-reinstall 'requests==2.6.0' ``` 安装完成后,再次执行`certbot --version`指令。 ``` certbot 1.9.0 ``` 安装成功。 2.证书安装 -- 执行`certbot`指令安装证书。 ``` certbot --nginx --nginx-server-root=/root/openresty/nginx/conf/ -d manyang.bangnikeji.net --nginx => 执行nginx指令 --ngonx-server-root => 指定nginx.conf所在的路径 -d => 指定需要申请证书的域名。 ``` 安装过程中出现以下错误 ``` Saving debug log to /var/log/letsencrypt/letsencrypt.log The nginx plugin is not working; there may be problems with your existing configuration. The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.",) ``` 首先使用`-V`指令查看有没有开启`--with-http_ssl_module`模块。 若没有。则使用指令,开启此模块。 ``` ./configure --witch-http_ssl_module ``` 若有,使用`witch nginx`指令,查看nginx有没有配置的环境变量中。 没有,使用'ln'添加,并设置软链接。 ``` ln -s /root/openresty/nginx/sbin/nginx /usr/bin/nginx ln -s /root/openresty/nginx/conf /etc/nginx ``` 再次执行安装指令。若出现如下错误,为Python编码问题。 ``` An unexpected error occurred: UnicodeEncodeError: 'ascii' codec can't encode characters in position 694-699: ordinal not in range(128) Please see the logfiles in /var/log/letsencrypt for more details. ``` 通过错误信息中的提示,找到日志文件。 在日志文件中找到main.py文件。在此文件头部添加如下代码 ``` import sys reload(sys) sys.setdefaultencoding("utf-8") ``` 再次执行安装命令。 安装成功。提示如下信息。 ``` IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/manyang.bangnikeji.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/manyang.bangnikeji.net/privkey.pem Your cert will expire on 2021-03-04. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: ``` 从提示信息中可以看到,站点manyang.bangnikeji.net已经生成证书。 有效期到2021-03-04。证书到期后,需要再次执行安装代码,更新证书。 再次查看nginx.conf文件时会发现,certbot在我们的配置文件server块中添加了如下代码片段 ``` listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/manyang.bangnikeji.net/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/manyang.bangnikeji.net/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot ``` `/etc/letsencrypt/options-ssl-nginx.conf`文件中包含如下几个参数,可以为我们后期优化提供帮助。 ``` ssl_session_cache shared:le_nginx_SSL:1m; 1m大约可以支撑4000次https链接服务 ssl_session_timeout 1440m; 超时时间 ssl_protocols TLSv1.1 TLSv1.2; 支持哪些版本 ssl_prefer_server_ciphers on; 使用哪些协议 ssl_ciphers 安全套件 ``` 至此,我们配置的站点(https://manyang.bangnikeji.net)可以使用https协议打开了。 --- PS:以上安装过程中,出现的错误,都是在全新服务器下的,安装过程中出现的错误。缺少各种依赖和配置。在生产环境中修改时,应该没有这么多错误。请根据实际环境排错。