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:以上安装过程中,出现的错误,都是在全新服务器下的,安装过程中出现的错误。缺少各种依赖和配置。在生产环境中修改时,应该没有这么多错误。请根据实际环境排错。