阿里云centos环境之Let's Encrypt SSL证书配置<十一>

1.目标

Let's Encrypt是国外一个公共的免费SSL项目。这里记录的是可执行的生成免费SSL证书Let’s Encrypt证书的过程。是手动配置的的流程。Python版本要求是2.7以上。

Python版本查看:

python -V

结果是:Python 2.7.5

操作系统信息查看:

cat /etc/redhat-release

结果是:CentOS Linux release 7.4.1708 (Core)

2.证书生成

进入/home/soft/ssl目录。没有目录的可自行创建。

执行命令

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --manual -d cas.zjclxny.com --email chenyuan122912@sina.com

其中最后一条命令:“--manual”是指定手动配置。"-d"指定域名,“--email”指定我的邮件,用户接收Let's Encrypt的邮件通知。

执行结果如下:

1.Are you OK with your IP being logged?

填“Y”

2.

-------------------------------------------------------------------------------
Create a file containing just this data:qrRbH9D69MdgXfBiNCPXKFaBw_-3nT0OJ-cpzMfUIh8.Dbly8kd-5TCo6km7-P5pyqBAeX70VPxt-UA2d9OrJCcAnd make it available on your web server at this URL:http://cas.zjclxny.com/.well-known/acme-challenge/qrRbH9D69MdgXfBiNCPXKFaBw_-3nT0OJ-cpzMfUIh8

确保访问http://cas.zjclxny.com/.well-known/acme-challenge/qrRbH9D69MdgXfBiNCPXKFaBw_-3nT0OJ-cpzMfUIh8域

名有访问到值。不论你用什么技术做服务器。(当然必需在生成证书的服务器上)

这里可以使用nginx做代理服务器,端口是80,这个“.well-known/acme-

challenge/qrRbH9D69MdgXfBiNCPXKFaBw_-3nT0OJ-cpzMfUIh8”目录需要自己创建,内容就

是“qrRbH9D69MdgXfBiNCPXKFaBw_-3nT0OJ-cpzMfUIh8.Dbly8kd-5TCo6km7-P5pyqBAeX70VPxt-UA2d9OrJCc”。每

次生成证书这些值都不一样的。

其实只要在指定服务器上,能正常访问url即可。使用什么做web服务器都可以。

3.证书位置

所有版本已申请的证书放在 /etc/letsencrypt/archive下,/etc/letsencrypt/live是指向最新版本的符号链接。web server中关于

证书的配置建议指向 live 目录下的文件,以免证书更新后还需要更改配置。

每个域名一个目录,主要包含以下几个文件:

cert.pem 申请的服务器证书文件

privkey.pem 服务器证书对应的私钥

chain.pem 除服务器证书外,浏览器解析所需的其他全部证书,比如根证书和中间证书

fullchain.pem 包含服务器证书的全部证书链文件

证书申请成功后会提示证书的文件路径,以及证书到期时间

证书申请有频率限制

1.注册IP限制:每IP每3个小时不超过10次

2.域名数量限制:每个域名(包含子域名)每7天不超过5个

英文好的可直接参考官网限制说明:官网证书申请限制

4.证书安装

4.1.配置Nginx

1)生成2048位 DH parameters
sudo openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048

结果如下:


说明生成成功。
2)修改nginx.conf
server {listen 443 ssl;server_name www.saxieyu.com;ssl_certificate /etc/letsencrypt/live/www.saxieyu.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/www.saxieyu.com/privkey.pem;ssl_dhparam /etc/ssl/certs/dhparams.pem;ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';ssl_prefer_server_ciphers  on;……}

说明:

listen 443 ssl:开启443端口监听
ssl_certificate:包含服务器证书的全部证书链文件
ssl_certificate_key:私钥的位置
ssl_dhparam:上面生成的2048位 DH parameters位置
ssl_ciphers:2048位 DH parameters里的值
ssl_prefer_server_ciphers为on表示开启
配置 http 强制跳转到 https:
server {listen 80;server_name www.saxieyu.com;return 301 https://$server_name$request_uri;}
如果不这样设置会报

400 Bad Request

The plain HTTP request was sent to HTTPS port

错误。

重启nginx。在sbin目录 下执行“./nginx -s reload”。如果提示提示“nginx: [emerg] the "ssl" parameter requires ngx_http_module”错误,是因为nginx缺少http_ssl_module模块.

1.如果想重新安装nginx
在生成makefile,编译模块指定如下:
./configure
--with-pcre=/usr/local/pcre-8.39
--with-zlib=/usr/local/zlib-1.2.11
--with-openssl=/usr/local/openssl-1.0.1t
--with-http_stub_status_module
--with-http_ssl_module

2.如果已经安装好nginx,不想重新安装

进入/usr/local/nginx/sbin/目录,执行
./nginx -V

查看目前已经安装的模块。


由于我已经安装了http_ssl_module模块,所以显示的比较多。
2.1)如果编译的源码存在的情况下,比如nginx-1.13.6,只要进入源码目录,执行
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

将http_ssl_module模块编译到现在模块中

执行
make

执行完毕后,不要进行make install,否则就是覆盖安装
然后备份原有已安装好的nginx
1.将整个/usr/local/nginx目录备份

2.杀死nginx进程,使用kill命令
3.进入源码目录nginx-1.13.6
执行
cp -r ./objs/nginx /usr/local/nginx/sbin/

4.再查看nginx已经安装的模块

./nginx -V

2.2如果源码已经删掉

1)再查看nginx已经安装的模块
./nginx -V

2)解压nginx-1.13.6.tar.gz
tar -zxvf nginx-1.13.6.tar.gz

进入目录

3)将已经安装的模块也编译一下

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --这里填入已经安装过的模块
4)执行完毕后,不要进行make install,否则就是覆盖安装,然后备份原有已安装好的nginx,将整个/usr/local/nginx目录备份
5).杀死nginx进程,使用kill命令
6).进入源码目录nginx-1.13.6
执行
cp -r ./objs/nginx /usr/local/nginx/sbin/

7).再查看nginx已经安装的模块

./nginx -V

最后重启nginx。
结果如下:


已经变成https协议了。完整配置如下:
nginx.conf
#user  nobody;
worker_processes  4;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;include      vhost/*.conf;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;gzip on;gzip_min_length  1k;gzip_buffers     4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;gzip_vary on;gzip_proxied   expired no-cache no-store private auth;gzip_disable   "MSIE [1-6]\.";}

vhost目录下子配置如下clxny.conf:

 #服务器的集群  upstream  cas.com {  #服务器集群名字   server    www.xxxxny.com:8184;#服务器配置   weight=1是权重的意思,权重越大,分配的概率越大。  server    www.xxxxny.com:8182;server    youka.xxxxny.com:8185;ip_hash;  }server {listen 443 ssl;server_name  cas.xxxxny.com;return 301 https://$server_name$request_uri;#charset koi8-r;#    root /usr/local/www/xny/;#access_log  logs/host.access.log  main;ssl_certificate /etc/letsencrypt/live/cas.zjclxny.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/cas.zjclxny.com/privkey.pem;ssl_dhparam /etc/ssl/certs/dhparams.pem;ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-EXXX...XXX:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';ssl_prefer_server_ciphers  on;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;location / {#proxy_pass http://netitcast.com;#proxy_set_header Host $http_host;#proxy_set_header X-Real-IP $remote_addr;#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;root /usr/local/www/xny;index  index.html index.htm;}location = /50x.html {root   html;}location /app/ {proxy_pass http://cas.com;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#root /usr/local/www/xny;index  index.html index.htm;}}

4.2 tomcat证书安装

由于上面做了负载均衡,当访问80端口时会自动跳转到443端口。因此,在nginx上安装了ssl证书后,就不需要在tomcat上安装了。相当于nginx做了代理访问,对外。而tomcat只是做为web容器,对内。

5.在线测试证书正确性

5.1证书详情:
5.2使用ssllabs测试证书正确性

证书完全OK
或者ssl验证工具 中文版本的哦

6.Let's Encrypt免费SSL证书续期

./certbot-auto renew

只用renew的话,会先检查证书是否需要更新,大概是距离到期还有三天或者十几天之内才会执行更新,否则会提示不需要更

新。(昨天更新了证书,今天直接用renew,提示不允许更新)
定时器更新
0 0 1 * * /home/soft/ssl/letsencrypt/certbot-auto renew>>/home/soft/ssl/letsencrypt/log.txt

补充:

Nginx 配置Http和Https共存

server {listen 80 default backlog=2048;listen 443 ssl;server_name wosign.com;root /var/www/html;ssl_certificate /usr/local/Tengine/sslcrt/ wosign.com.crt;ssl_certificate_key /usr/local/Tengine/sslcrt/ wosign.com .Key;}

ssl写在443端口后面。这样http和https的链接都可以用

参考文章:

Let's Encrypt SSL证书配置

免费SSL证书Let’s Encrypt安装使用教程:Apache和Nginx配置SSL

阿里云centos环境之Let's Encrypt SSL证书配置十一相关推荐

  1. 阿里云centos环境之vsftpd安装(十五)

    阿里云centos环境之vsftpd安装(十五) 文章目录 前言 安装 检测 安装 配置文件路径 启动服务器 启动ftp命令: 其它相关命令 停止ftp命令: 重启ftp命令: 设置开机自启动 看是否 ...

  2. 阿里云centos环境之被dos,syn攻击策略和排查方法,持续更新九

    阿里云centos环境之被dos,syn攻击策略和排查方法,持续更新<九> 阿里云centos环境之被dossyn攻击策略和排查方法持续更新九 查看cpu使用情况 查看网络连接情况 检查端 ...

  3. 阿里云CentOS环境之-实战docker集群swarm(十五)

    前言 docker1.12版本之前版本配置 准备工作 开始 拉取swarm 开放2375远程访问端口 创建集群的token 向集群里添加结点 查看集群里有哪些结点 创建管理者容器 使用集群 离开集群 ...

  4. 阿里云centos环境之linux上redis安装及踩过的坑(七)

    阿里云centos环境之linux上redis安装及踩过的坑<七> 文章目录 阿里云centos环境之linux上redis安装及踩过的坑<七> 第一:下载上传 第二:解压安装 ...

  5. 阿里云添加二级域名及生成免费ssl证书

    阿里云添加二级域名及生成免费ssl证书 一.问题背景 app上架需要绑定域名进行解析,需要提供域名及对应的ssl证书 二.解决方案 1.公司已有域名,生成二级域名和免费ssl证书提供 三.具体操作 1 ...

  6. 解决 Let’s Encrypt SSL 证书配置错误

    解决 Let's Encrypt SSL 证书配置错误"DNS problem: NXDOMAIN looking up A for xxx.com" 一.问题:Let's Enc ...

  7. 从阿里云“数字证书管理服务”申请免费的SSL证书

    最近网站的SSL证书即将到期,之前是从FreeSSL申请的证书,而且是通过OpenSSL自己生成CSR文件的方式申请的证书,操作还是比较繁琐.(具体参考: https://blog.csdn.net/ ...

  8. 阿里云服务器windows phpstudy wordpress建站ssl证书安装

    引言 网上关于如何安装ssl证书的帖子巨多,尝试了很多方法,基本上都无法正确安装.下面再尝试了多次失败以及重装phpstudy后终于成功安装ssl证书. 证书下载 如果你的域名是从阿里云(万网)购买, ...

  9. 腾讯云轻量型服务器安装Nginx且SSL证书配置实现HTTP和HTTPS连接

    因为开发微信小程序需要https连接所以买了一个腾讯云轻量型服务器.在配置之前需要先购买服务器->申请域名->配置解析域名->申请SSL证书.在几分钟前刚实现http和https的网 ...

最新文章

  1. 石墨烯区块链(3)软件升级
  2. 【通俗易懂】C语言中,for循环中i++与++i的区别
  3. ajax请求url 绝对路径与相对路径
  4. 基于HALCON的模板匹配方法总结
  5. 年轻人开始“反推荐算法”:算法不讲武德!
  6. linux挂载lvm
  7. I.MX6 2G DDR3 16G eMMC
  8. java中接口可以产生数组吗,java接口Array介绍
  9. android中怎么录制屏幕内容,手机怎么录屏?5分钟教你怎么录制手机屏幕
  10. OpenWrt路由器通过Aria2开启迅雷离线下载[图文教程]
  11. 查找类似图片关键字查找图片
  12. 2019春节防坑指南之抢票陷阱
  13. 前馈神经网络练习:使用tensorflow进行葡萄酒种类识别
  14. 【网络流24题23】火星探险问题
  15. windows无法连接到某个wifi_Windows无法连接到网络解决方法
  16. 滴滴二面:Kafka是如何读写副本消息的?
  17. Third season twenty-third episode,Ross‘s thing on his butt???
  18. 网页制作用html和sc,实验二:html的基本标签和javasc
  19. 送货记账软件网络版怎么用
  20. 如何给生成的exe加图标

热门文章

  1. Office2007打开word和excel文件速度慢,在两个打开的word文件之间切换的速度慢,如何处理?...
  2. 管理信息系统【一】之 管理信息系统概论
  3. 根证书的有效期与服务器SSL证书一样长吗?
  4. copy.deepcopy()函数深复制
  5. gks的定义计算机图形学,计算机图形学(概念)
  6. 03 switch循环语句
  7. ACM-ICPC 2018 沈阳赛区网络预赛 G. Spare Tire
  8. 第九回(一):任侠厨子轻解厄围 夜半蹴鞠为泄忿闷
  9. 算法工程师面试之OOV问题如何解决?
  10. 听说要发年终奖了,来来来,我们互相伤害