2019独角兽企业重金招聘Python工程师标准>>>

官方网址 https://letsencrypt.org/

UPDATE:

[2018/10/26]如果创建证书时出现 Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.,表示要更新你的certbot工具了,如果是certos,简单的执行yum update certbot就行了。参考这里。

高能提醒:

[1] Let's Encrypt实测还是有兼容性问题(兼容性在这里测试,java 6u45和java 7u80都不兼容),特别是java程序里,会被不信任(如错误提示:您需要设置证书才能访问此网址,PKIX path building failed: unable to find valid certification path to requested target)。因为java会自己维护一份keystore,目录在 $JAVA_HOME/lib/security/cacerts(详情解释在这),里面放了大部分公开的可信CA ROOT证书(关于根证书更新的方法可以参考微信的这个帮助说明,当然,每家CA的root证书是不同的,不要照搬照抄,去CA的官方找ROOT证书再更新),但并不包含Let's Encrypt,特别是一些老的运行环境,解决办法可以手工添加(点此处下载Let's Encrypt CA Root,关于Let's Encrypt CA的详细介绍)或用这个程序自动添加,下载这个代码 http://blogs.sun.com/andreas/resource/InstallCert.java,编译后运行,更新keystore #java InstallCert www.example.com

[2] 关于Let's Encrypt 与 Java 运行环境的问题参考这里。Java 7 >= 7u111 and Java 8 >= 8u101 已经支持,但依赖于JVM环境,如JDK/JRE 到8u66还没有完全自动支持。

[3]如何查询java运行环境已经支持的CA ROOT证书,代码在这。默认密码是changeit

转入正题,开始安装Let's Encrypt SSL

环境:CentOS Linux release 7.4.1708 (Core);欲添加ssl的域名必须是可以直接访问的,因为需要与let's encrypt服务器进行正反双向的握手通讯认证,如果是修改hosts方式定义的域名无法生成ssl证书;

1.安装支持软件
yum install certbot-nginx

升级pip
pip install --upgrade pip

如果pyOpenSSL版本小于0.14(比如阿里云的yum仓库),则要先删除再独立安装最新版本(如果yum库没有最新版本的话,有的话直接从yum安装)
yum erase pyOpenSSL (此命令会同步删除certbot-nginx,不可使用)
rpm -e --nodeps pyOpenSSL

pip install --upgrade pyOpenSSL

2.配置单域名方式

如果域名和IP在同一台机器上,则执行自动配置命令:
certbot --nginx

如果想安全一点不让程序自动修改Nginx.conf,则执行手工配置命令:

certbot --nginx certonly

根据命令提示一步一步,每次只能选择一个域名,虽然提示说可以逗号分多个选择,但实际测试不支持。另外注意结束的提示,有pem证书和密钥文件保存的位置要记录下来,以后有用到,如
/etc/letsencrypt/live/tf.example.com/fullchain.pem
/etc/letsencrypt/live/tf.example.com/privkey.pem

配置完后一定要测试续订命令有没有报错:certbot renew,如果有报错,可以删除一些配置/etc/letsencrypt/renewal/,重试。

2.配置通配符方式
安装DNS插件,目前只有部分DNS服务商提供了这个服务(国内大部分DNS商家都没有)
https://certbot.eff.org/docs/using.html#dns-plugins

certbot-dns-cloudflare
certbot-dns-cloudxns
certbot-dns-digitalocean
certbot-dns-dnsimple
certbot-dns-dnsmadeeasy
certbot-dns-google
certbot-dns-luadns
certbot-dns-nsone
certbot-dns-rfc2136
certbot-dns-route53

DNS插件安装成功后提示命令
certbot -a dns-plugin -i nginx -d "*.example.com" -d example.com --server https://acme-v02.api.letsencrypt.org/directory

3.因Let's Encrpty三个月过期,可以自动续订
certbot renew --dry-run

安装脚本到cron里
certbot renew

例如:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

4.配置备份

帐号等配置放在这个目录下,要做好这个目录下文件的备份。
/etc/letsencrypt

附录

[1]安装时报错:ImportError: No module named 'requests.packages.urllib3',是因数Centos7的BUG,请用此命令强制升级 pip install requests urllib3 pyOpenSSL --force --upgrade,如果有提示某些包被其他管理器安装的,这里是yum,则先删除后再执行,如梦
rpm -e --nodeps python-enum34
rpm -e --nodeps python-ipaddress

[2] 从泛域名换成单个域名,发现某些java程序调用ssl链接会报错,如PKIX path building failed: unable to find valid certification path to requested target,具体原因跟java运行环境对ssl密钥的管理有关,因为Let's Encrypt 还不是大众都接受的证书供应商,所以对部分客户端的支持不是那么友好,解决方案参考这里 或 这里自动更新java的证书。另外遇到的一个问题时,有的java环境会缓存另外的域名的情况,如果提示hostname不一致,则可以删除那个域名试下(如果不重要的域名),致于java环境如果会缓存到未提供过的域名,原因还未知。

[3]centos 7下面如何直接certbot renew时报如下错误,

ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

则执行

mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL

具体参考讨论,这是一种不太安全的做法,不知会不会其他负作用。可以尝试下面的方法:

rpm --query centos-release  # centos-release-7-3.1611.el7.centos.x86_64
wget ftp://ftp.muug.ca/mirror/centos/7/cloud/x86_64/openstack-newton/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum install certbot
certbot renew  # OK

参考资料

[1] https://certbot.eff.org/lets-encrypt/centosrhel7-nginx
[2]Issues: https://github.com/certbot/certbot/issues/5104

转载于:https://my.oschina.net/swingcoder/blog/1821221

Let's Encrypt 免费SSL配置相关推荐

  1. wordpress个人博客申请Let’s Encrypt免费SSL证书

    最近,在网上火透半边天的,非 Let's Encrypt 的免费SSL证书莫属了.Let's Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过 ...

  2. windows server使用 LetsEncrypt-Win-Simple来安装和使用用Let's Encrypt免费SSL证书

    一.网站部署 LetsEncrypt-Win-Simple可以自动发现已经部署的网站供我们选择要生成证书的网站,而且还需要进行验证.所以在生成证书之前,确保网站已经部署好并可以正常访问. 二.生成证书 ...

  3. Let‘s Encrypt免费SSL证书申请

    摘要: Let's Encrypt作为一个公共且免费SSL,目前Let's Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约. 参考搬砖内容: GitHub - acmesh ...

  4. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书

    使用https证书的话,强制使用域名 很多商家也都提供免费证书,比如腾讯云提供免费一年GeoTrust DV SSL证书.Let's Encrypt永久免费但需要90天激活一次续约,当然如果要购买证书 ...

  5. Django服务器安装ssl证书,Django网站(Apache部署)安装Let's Encrypt免费SSL证书

    为什么要HTTPS 2018年2月8日,谷歌浏览器发布官方博客称,2018年7月发布的新版谷歌浏览器Chrome将把所有的HTTP网站标记为不安全.这项举措是为了促进网络安全,倡导更多网站使用HTTP ...

  6. Acme.sh 自动生成、续期 ​Let‘s Encrypt 免费SSL证书

    ​​Let's Encrypt 提供了90天免费证书,而 acme.sh 实现了 acme 协议, 可以从 ​​Let's Encrypt 生成免费的证书.,通过计划任务可实现自动续期,自动部署,完全 ...

  7. 申请Let‘s Encrypt免费SSL证书、自动化续签证书

    一.环境 安装证书的环境为Centos + Nginx,如果没有安装Nginx则需要先安装. 二.申请流程 1.开放80和443端口 firewall-cmd --permanent --add-po ...

  8. 申请Let's Encrypt永久免费SSL证书

    申请Let's Encrypt永久免费SSL证书 申请Let's Encrypt永久免费SSL证书 Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用 ...

  9. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题

    最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...

最新文章

  1. 剑指offer:反转链表
  2. PHP用空格分割文本为数组的方法
  3. ASP.NET MVC 整合 Spring.net(1)- Controller进容器
  4. HTTP 协议深入理解(一)
  5. 测试用例集-11.QQ表情收藏功能测试用例
  6. 华为小米 OPPO 们联合起来才不是为了打倒微信!
  7. java 试卷自动生成_基于JAVA的试题自动生成系统 - WEB源码|JSP源码/Java|源代码 - 源码中国...
  8. 从文本中读取 并截取需要的字符串
  9. 机器学习算法篇:谈Softmax激活函数以及Softmax回归和Logistic回归关系
  10. 数据产品-产品经理必备的七大文档
  11. 2008 r2 server sql 中文版补丁_sql2008 sp3补丁下载-sql server 2008补丁包sp3中文版补丁【32/64位】-东坡下载...
  12. 上班要了解的一些法律条例
  13. autocad ios 虚线_教大家AutoCAD2020怎么画虚线的方法
  14. CSDN愈来愈金钱化
  15. HMM原理解析(转载)
  16. [云原生专题-4]:云平台 - 在阿里云平台快速搭建服务器集群
  17. WebView加载失败或网络异常时,替换WebView的错误界面;
  18. 拿到阿里50K offer的数据分析师,都是什么水平?
  19. MAC装win10 清理临时文件
  20. 融云一站式「云市场」上线,携手生态伙伴,共建价值平台

热门文章

  1. 解析TOMCAT框架 .
  2. java 代码性能优化_Java代码性能优化(四)
  3. Caffe + windows + python3.5安装
  4. 源码安装zabbix3.2.7时PHP ldap Warning
  5. CVE-2017-5521: Bypassing Authentication on NETGEAR Routers(Netgear认证绕过漏洞)
  6. Docker入门简介
  7. 纯C#实现Hook功能
  8. Delphi 2007体验!
  9. [CRM] CRM 产品周期
  10. 异常:java.util.ConcurrentModificationException