Centos7.0安装 Lets encrypt 的SSL证书

本文链接:https://blog.csdn.net/yangshuai518/article/details/99951202

1.安装Certbot

执行命令   sudo yum install certbot

如果出现下面类似错误:

Running transaction
  Installing : python2-urllib3-1.16-1.el7.noarch                                                                                                                                           1/1
Error unpacking rpm package python2-urllib3-1.16-1.el7.noarch
error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename
  Verifying  : python2-urllib3-1.16-1.el7.noarch                                                                                                                                           1/1

Failed:
  python2-urllib3.noarch 0:1.16-1.el7

请执行下面命令

pip uninstall requests
pip uninstall urllib3
yum remove python-urllib3
yum remove python-requests
yum install python-urllib3
yum install python-requests


然后重新执行:  sudo yum install certbot

如果出现:

Installed:
  certbot.noarch 0:0.36.0-1.el7

Dependency Installed:
  python-requests-toolbelt.noarch 0:0.8.0-1.el7       python2-acme.noarch 0:0.36.0-1.el7       python2-certbot.noarch 0:0.36.0-1.el7      
  python2-requests.noarch 0:2.6.0-0.el7

表示执行成功


2.有服务(例如nginx)占用了443端口,必须先停止

执行命令:certbot certonly --standalone -d www.xxx.com -m xxxx@xxx.com --agree-tos

-d  是你的域名 -m 后面是跟的是邮箱,建议填写真实邮箱。执行过程中要你输入Y or N? 一律输入y 然后回车。

等待一段时间会显示

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.xxxx.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.xxxx.com/privkey.pem
   Your cert will expire on 2019-11-19. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

这样就生成成功了!


执行命令查看生成的密钥等:

ll /etc/letsencrypt/live/www.xxxx.com/

cert.pem -> ../../archive/www.xxxx.com/cert1.pem
chain.pem -> ../../archive/www.xxxx.com/chain1.pem
fullchain.pem -> ../../archive/www.xxxx.com/fullchain1.pem
privkey.pem -> ../../archive/www.xxxx.com/privkey1.pem


文件表示的意思:
cert.pem            服务端证书
chain.pem         浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
fullchain.pem     包括了cert.pem和chain.pem的内容
privkey.pem       证书的私钥

请保存下来,以备不时之需。


如果需要生成其他的二级域名,重复生成就行了,www.xxxx.com需改成 m.xxxx.com


3.生成nginx需要的dhparam

执行命令:

mkdir /etc/nginx/websites

openssl dhparam -out /etc/nginx/websites/dhparam4096.pem 4096

当然可以用2048,执行时间会短点,当然4096安全性高,websites可以自定义,自己方便就好。

4.创建SSL文件

cd  /etc/nginx/websites

vim www.xxxx.com.ssl

下面内容复制进去,自己适当修改红色部分,蓝色部分后面有解释。

ssl on;
ssl_certificate /etc/letsencrypt/live/www.xxxx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.xxxx.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/websites/dhparam4096.pem;
ssl_ciphers HIGH:!ADH:!MD5:!aNULL:!eNULL:!MEDIUM:!LOW:!EXP:!kEDH;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;


复制上面代码的时间注意点,我复制的时间开头会掉一个s,变成 sl on;这样启动nginx的时间会报错。


5.配置nginx

server {
        listen 80;
        server_name *.xxxx.com;
        rewrite ^ https://$server_name$request_uri;
    }

#PC网页端

server {
        listen 443 ssl;
        server_name www.xxxx.com;
        include /etc/nginx/websites/www.xxxx.com.ssl;

location / { try_files $uri @web_app; }
        location @web_app {
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Host $http_host;
              proxy_set_header X-Forwarded-Proto https;
              proxy_redirect off;
              proxy_pass http://127.0.0.1:8080; #PCtomcat端口
        }
  }

#移动端SSL
 server {
        listen 443 ssl;
        server_name m.xxxx.com;
        include /etc/nginx/websites/m.xxxx.com.ssl;

location / { try_files $uri @m_app; }
        location @m_app {
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Host $http_host;
              proxy_set_header X-Forwarded-Proto https;
              proxy_redirect off;
              proxy_pass http://127.0.0.1:8081;#移动端tomcat端口
        }
}

6.nginx启动

cd /etc/nginx

nginx

如果出现  [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead 这个警告

请将第4步中蓝色部分的 ssl on 这行注释掉:#ssl on;

OK,你的网站可以https://访问了!!!!!!!!!!!!!!!!!!!

7.删除证书操作

在某些情况下如果需要删除证书,

certbot delete --cert-name www.xxxx.com

然后你需要从第3步重新开始。

8.更新证书

Let's Encrypt 证书只有 90 天有效期,而且如果更新证书,它只会更新30天内到期的证书。命令行:

/usr/bin/certbot renew --dry-run

当然我们可以做一个定时任务,每隔2个月更新下证书,早上5点01分进行执行,红色部分根据centos版本不同可能有所不同

01 5 * */2 * /usr/bin/certbot renew --post-hook "service nginx restart" --quiet >> /usr/local/task/cerbottask.log

--pre-hook 这个参数表示执行更新操作之前要做的事情

--post-hook 这个参数表示执行更新操作完成后要做的事情

然后启动定时任务

crontab certbot-auto-renew-cron

9.tomcat支持

由于本人使用的是spring boot带的tomcat,所有默认开启了ssl支持

如果你是自己单独使用的tomcat需要自己配置如下:

一、在 Connector 节点增加 proxyPort="443"

  1. <Connector port="8080" protocol="HTTP/1.1"

  2. connectionTimeout="20000"

  3. redirectPort="8443" proxyPort="443" />

二、添加如下 Value 节点

  1. <Valve className="org.apache.catalina.valves.RemoteIpValve"

  2. remoteIpHeader="x-forwarded-for"

  3. remoteIpProxiesHeader="x-forwarded-by"

  4. protocolHeader="x-forwarded-proto" />

Centos7.0安装 Lets encrypt 的SSL证书相关推荐

  1. 使用 Let's Encrypt 为 Zimbra-8.8.15 安装可信任的SSL证书

    上一篇我们已经安装好了 Zimbra-8.8.15 ,但是登录网页版的时候会提示证书错误,在忽略证书错误以及25端口已经解封的情况下就已经可以正常的收发邮件了,但是一直提示证书错误很不友好,给人不安全 ...

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

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

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

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

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

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

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

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

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

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

  7. 百度云:centos7.0+ 安装宝塔与ShopXO开源商城(从0搭建到部署上线) - 教程篇

    全程高能:从0搭建到部署上线.配图文详解 百度云:centos7.0+ 安装宝塔与ShopXO开源商城 - 部署篇 安装前准备 · step: 相关截图: 去除安全隐患: 注意事项: 附:如何二级域名 ...

  8. 【Python】CentOs7 Python3安装Openssl以及解决ssl问题

    [Python]CentOs7 Python3安装Openssl以及解决ssl问题 参考文章: (1)[Python]CentOs7 Python3安装Openssl以及解决ssl问题 (2)http ...

  9. 虚拟机CentOS7.0安装万能五笔的方法

    虚拟机CentOS7.0安装万能五笔的方法 条件:windows 7, VWmare 10.0 , CentOS7.0 说明:安装万能五笔的方法很简单,就是把两个文件复制到指定的目录下,再重启ibus ...

最新文章

  1. parsing:NLP之chart parser句法分析器
  2. 带你100% 地了解 Redis 6.0 的客户端缓存
  3. [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(三) -- 安装confluence 6.6.1
  4. sklearn自学指南(part47)--主成分分析
  5. StroyBoard中UICollectionView中添加Header和footer
  6. php字符串与数字比较,PHP容易被忽略而出错陷阱 数字与字符串之间的比较
  7. 第50课 书香阁的座位数
  8. Android Launcher 应用开发
  9. Windows下打开.jar文件的方式
  10. cpu散片是什么意思?
  11. 如何快速使用计算机键盘,怎么使用电脑键盘快速打字
  12. js URL 地址参数格式化
  13. C#中TransactionScope的使用小结
  14. android用shape画虚线,怎么也不显示
  15. 干货·Doherty功放设计
  16. 一元导数与多元求导数总结
  17. 1003: 两个整数的四则运算 C语言
  18. 2020年IDA插件大赛:DynDataResolver夺冠
  19. 2019年度区块链安全复盘总结
  20. NotePad 打开文件 出现中文汉字乱码 解决办法

热门文章

  1. 插件开发 之 生成代码
  2. php 添加水印, 格式转换, 变换大小 Watermark, png2jpg, resize
  3. magento:getChildHtml() 与getChildChildHtml() 的用法,区别
  4. 后端技术栈入职培训感悟
  5. 解决`向github提交代码是老要输入用户名密码`
  6. 《C和指针》——宏中容易出现的错误
  7. 三维点云网络——PointNet论文解读
  8. linux 分卷解压
  9. C语言中Uint8_t数据类型
  10. 2022年有哪些值得学习的Java开源项目?这7个火爆了