博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Let's Encrypt免费ssl证书安装使用详解
阅读量:6292 次
发布时间:2019-06-22

本文共 3296 字,大约阅读时间需要 10 分钟。

Let's Encrypt

Let's Encrypt是由互联网安全研究小组(ISRG,一个公益组织)于2015年末推出的数字证书认证机构一个免费SSL证书,证书有90天的有效期,可以配置自动化更新证书,非常适合个人使用。

安装证书

安装certbot

yum install certbot

获取证书(standalone和webroot模式)

standalone 独立模式安装证书

certbot certonly --email youremail@gmail.com -d example.com

设置你的邮箱和服务域名,执行该命令即可生成证书。 tips:

  • 生成会启用服务器的443端口,来验证域名是否与服务器绑定
  • 确保你没有其他服务占用了443端口(如nginx)
webroot 模式在服务根目录下安装证书

certbot certonly --webroot -w /var/www/example -d example.com --email youremail@gmail.com

使用--webroot 模式会在你指定的/var/www/example 服务目录中创建.well-known文件夹,这个文件夹里面包含了一些验证文件,certbot会通过访问example.com/.well-known/acme-challenge来验证你的域名是否绑定的这个服务器。

证书生成成功以后可以在/etc/letsencrypt/live/ 目录下看到对应域名的文件

遇到过的两个证书生成出现的问题:

1.

报错提示:ImportError: No module named 'requests.packages.urllib3'运行以下命令后,成功解决pip install requests urllib3 pyOpenSSL --force --upgradepip install --upgrade --force-reinstall 'requests==2.6.0'复制代码

2.

报错提示:raise ImportError("'pyOpenSSL' module missing required functionality. "ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.解决:装高版本pyOpenSSL即可复制代码

配置nginx启用HTTPS

使用standalone模式生成证书以后配和Nginx即可启用https Nginx配置

# For more information on configuration, see:#   * Official English Documentation: http://nginx.org/en/docs/#   * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;# Load dynamic modules. See /usr/share/nginx/README.dynamic.include /usr/share/nginx/modules/*.conf;events {    worker_connections 1024;}http {    gzip on;    gzip_min_length 1k;    gzip_buffers    4 16k;    gzip_http_version 1.0;    gzip_comp_level 6;    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;    gzip_vary on;    map $http_upgrade $connection_upgrade {        default upgrade;        ''      close;    }    server {          listen  80;        server_name www.binlive.cn binlive.cn;        rewrite ^(.*)$  https://$host$1 permanent;      }    server {        listen 443 ssl;        server_name  www.binlive.cn binlive.cn;        ssl on;        ssl_certificate /etc/letsencrypt/live/binlive.cn/fullchain.pem;        ssl_certificate_key /etc/letsencrypt/live/binlive.cn/privkey.pem;        ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        ssl_session_cache shared:SSL:10m;        ssl_prefer_server_ciphers on;        ssl_session_timeout  5m;        location /{            proxy_pass http://127.0.0.1:3000;    	    proxy_set_header  Host              $http_host;   # required for docker client's sake    	    proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP    	    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;    	    proxy_set_header  X-Forwarded-Proto $scheme;    	    proxy_read_timeout                  900;        }    }}复制代码
  • 第一个server中监听80端口,把http请求改为https请求
  • 第二个server中启用https服务,https服务的默认端口为443
  • ssl_certificatessl_certificate_key中指定生成的SSL的证书路径

自动更新SSL证书

Let’s Encrypt提供的证书有效期为90天,certbot renew命令可以自动更新证书

crontab 定时任务

执行crontab -e即可编辑定时任务,在编辑中输入下面命令即可 15 3 * */2 * certbot renew --pre-hook "nginx -s stop" --post-hook "nginx" 这段定时命令为每隔两月凌晨 3:15执行命令, --pre-hook 意思为执行命令之前的一步操作,更新证书需要先停止Nginx服务,在更新完成后会自动执行--post-hook 后面的命令,开启Nginx服务。

转载地址:http://vxcta.baihongyu.com/

你可能感兴趣的文章
元胞自动机:更接近人类思考的智能模型
查看>>
ISCSI网络存储
查看>>
开源跳板机(堡垒机)Jumpserver v0.2.0 使用说明
查看>>
第二组视频:MySQL复制
查看>>
不同系统查WWN号
查看>>
社交网络用户并非越多越好
查看>>
读于丹《趣品人生》有感
查看>>
俞敏洪:我让女儿主动学习的秘密
查看>>
Android应用程序组件Content Provider的启动过程源代码分析(1)
查看>>
分布式一致Hash算法
查看>>
版本服务器Svn部署与配置
查看>>
揪出MySQL延迟上千秒的元凶
查看>>
shell编程开发应用指南
查看>>
⑤Windows Server 8 RemoteFX体验
查看>>
python使用localhost链接mysql出错及解决办法
查看>>
PYTHON高级全栈开发工程师-老男孩教育
查看>>
人人出售56不亏:三方得利
查看>>
美柚引流宝妈女粉,淘宝客微商不用引流脚本也能日吸500+
查看>>
如何用手机维护Mysql数据库
查看>>
Office 365启用多重身份验证
查看>>