教你如何在let's encrypt申请免费证书---开启网站的https之路

简介:

最近谷歌和火狐封杀了国内大部分的CA机构,导致使用国内CA办法的证书在chrome浏览器显示为不安全的网站,国外的证书又比较贵,发现了一款开源免费的证书机构let's encrypt, 

是由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,比较有权威性,下面的例子是nginx

实例上的部署安装过程。


1. 安装客户端脚本


curl https://get.acme.sh | sh

安装完成后会自动在计划任务中增加一条任务自动更新证书,自动申请 因为证书有效期应该是90天

需要自动续签

44 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null


配置域名的80端口,使let's encrypt可以验证域名所在的服务器属于你管理


server {

      listen 80;

      server_name  app.lhz.cc;

      location ^~ /.well-known/acme-challenge/ {

      alias  /var/www/challenges/.well-known/acme-challenge/;

    }

      location /{

            rewrite ^(.*)$  https://app.lhz.cc permanent;           

       }

     access_log  /var/log/nginx/emmaapp80.log main;

   }




2. 生成证书key等


 /root/.acme.sh/acme.sh  --issue -d app.lhz.cc -w /var/www/challenges/

[Fri Aug  4 15:58:13 CST 2017] Registering account

[Fri Aug  4 15:58:15 CST 2017] Registered

[Fri Aug  4 15:58:16 CST 2017] Update account tos info success.

[Fri Aug  4 15:58:16 CST 2017] ACCOUNT_THUMBPRINT='Kzgy....sG9.......KxZOhj_PWj0U'

[Fri Aug  4 15:58:16 CST 2017] Creating domain key

[Fri Aug  4 15:58:16 CST 2017] The domain key is here: /root/.acme.sh/app.lhz.cc/app.lhz.cc.key

[Fri Aug  4 15:58:16 CST 2017] Single domain='app.lhz.cc'

[Fri Aug  4 15:58:16 CST 2017] Getting domain auth token for each domain

[Fri Aug  4 15:58:16 CST 2017] Getting webroot for domain='app.lhz.cc'

[Fri Aug  4 15:58:16 CST 2017] Getting new-authz for domain='app.lhz.cc'

[Fri Aug  4 15:58:18 CST 2017] The new-authz request is ok.

[Fri Aug  4 15:58:18 CST 2017] Verifying:app.lhz.cc

[Fri Aug  4 15:58:23 CST 2017] Success

[Fri Aug  4 15:58:23 CST 2017] Verify finished, start to sign.

[Fri Aug  4 15:58:25 CST 2017] Cert success.

-----BEGIN CERTIFICATE-----

MIIE9zCCA9+gAwIBAgISBKXWtHLEJcIiJT9O9+FllCgFMA0GCSqGSIb3DQEBCwUA

ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzA4MDQwNjU4MDBaFw0x

NzExMDIwNjU4MDBaMBUxEzARBgNVBAMTCmFwcC5yaWQuY2MwggEiMA0GCSqGSIb3

DQEBAQUAA4IBDwAwggEKAoIBAQDwMUoaFCycC9kzad96XAeh/5aUhx5a4U3m5DFl

此处省略1万字..............................................................................................................................

Y8XoJMDKrmNK427ZkUjhe7yZcSxQai7pQEII

-----END CERTIFICATE-----

[Fri Aug  4 15:58:25 CST 2017] Your cert is in  /root/.acme.sh/app.lhz.cc/app.lhz.cc.cer 

[Fri Aug  4 15:58:25 CST 2017] Your cert key is in  /root/.acme.sh/app.lhz.cc/app.lhz.cc.key 

[Fri Aug  4 15:58:25 CST 2017] The intermediate CA cert is in  /root/.acme.sh/app.lhz.cc/ca.cer 

[Fri Aug  4 15:58:25 CST 2017] And the full chain certs is there:  /root/.acme.sh/app.lhz.cc/fullchain.cer 


3. 安装证书到nginx配置中指定位置,命令执行完成之后,会将下面的路径文件名称都会记录下来,方便自动更新证书


acme.sh --installcert -d app.lhz.cc \

>                --keypath  /usr/local/nginx-1.8/conf/ssl/app_lhz_cc.key  \

>                --fullchainpath /usr/local/nginx-1.8/conf/ssl/app_lhz_cc.crt \

>                --reloadcmd     "/usr/local/nginx-1.8/sbin/nginx -s reload"

[Fri Aug  4 16:31:40 CST 2017] Installing key to:/usr/local/nginx-1.8/conf/ssl/app_lhz_cc.key

[Fri Aug  4 16:31:40 CST 2017] Installing full chain to:/usr/local/nginx-1.8/conf/ssl/app_lhz_cc.crt

[Fri Aug  4 16:31:40 CST 2017] Run reload cmd: /usr/local/nginx-1.8/sbin/nginx -s reload

[Fri Aug  4 16:31:40 CST 2017] Reload success


4.生成dhparam

openssl dhparam -out /root/.acme.sh/app.lhz.cc/dhparam.pem 2048



5. 证书在Nginx中的配置


  server {

       listen 443;

       server_name app.lhz.cc;


       ssl on;

       #配置生成的证书

       ssl_certificate /usr/local/nginx-1.8/conf/ssl/app_lhz_cc.crt;

       ssl_certificate_key /usr/local/nginx-1.8/conf/ssl/app_rid_cc.key;

       ssl_dhparam  /usr/local/nginx-1.8/conf/ssl/dhparam.pem;


       ssl_session_cache    shared:SSL:10m;

       ssl_session_timeout  10m;

       ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;

       ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

       ssl_prefer_server_ciphers   on;

       error_page 497 "https://$host$uri?$args";



       location / {

    proxy_pass http://app80_server_pool;

    proxy_set_header Host app.lhz.cc;

            proxy_set_header X-Forwarded-For $remote_addr;

    proxy_set_header X-Forwarded-Proto https;

}


access_log  /var/log/nginx/app.log main; 

    }



     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/1953665,如需转载请自行联系原作者


相关文章
|
3月前
|
安全 网络协议 网络安全
HTTPS:保护你的网站免受中间人攻击的关键技术
【6月更文挑战第13天】HTTPS是抵御中间人攻击的关键技术,通过数据加密、身份验证和完整性保护保障网络安全。它基于SSL/TLS协议加密通信,防止数据被窃取或篡改,并使用数字证书确认服务器身份,避免伪造。要确保HTTPS安全,需使用有效数字证书,启用强制HTTPS,定期更新维护并限制访问范围。
|
24天前
|
网络安全 Apache Windows
网站⭐Windows下,将xampp升级为https
网站⭐Windows下,将xampp升级为https
|
3月前
|
前端开发 小程序 应用服务中间件
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
在服务器上正确配置域名https证书(ssl)及为什么不推荐使用宝塔申请免费ssl证书
195 4
|
3月前
|
监控 安全 网络安全
探讨网站加密访问的安全性问题:HTTPS的防护与挑战
**探讨HTTPS在网站加密中的角色,提供数据加密和身份验证,防范中间人攻击。心脏滴血漏洞示例显示持续维护的必要性。面临证书管理、性能影响和高级攻击挑战,应对措施包括更新、HSTS策略及用户教育。HTTPS是安全基础,但需不断优化以应对新威胁。**
117 2
|
3月前
|
Ubuntu 应用服务中间件 Shell
acme.sh自动申请https证书
该文介绍了如何在Ubuntu 20.04系统上使用acme.sh获取和安装免费的HTTPS证书,适用于已经安装了nginx的环境。首先通过`sudo curl https://get.acme.sh | sh -s email=example@mail.com`安装acme.sh,然后使用`acme.sh --issue -d example.com -w /home/onestudy`生成证书,并用`acme.sh --install-cert`安装到nginx。设置定时任务以定期更新证书,并提供了不同方式的证书获取命令及删除和刷新证书有效性的方法。需确保已配置好域名解析和nginx配置。
215 0
|
3月前
|
网络协议 安全 应用服务中间件
阿里云 网站https设置 sll申请与nginx跳转配置
阿里云 网站https设置 sll申请与nginx跳转配置
108 0
|
4月前
|
安全 算法 网络协议
HTTPS:如何确保您的网站数据传输安全?
HTTPS:如何确保您的网站数据传输安全?
162 2
|
4月前
|
前端开发 应用服务中间件 网络安全
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)
470 0
|
3月前
|
安全 网络协议 网络安全
IP代理的三大协议:HTTP、HTTPS与SOCKS5的区别
**HTTP代理**适用于基本网页浏览,简单但不安全;**HTTPS代理**提供加密,适合保护隐私;**SOCKS5代理**灵活强大,支持TCP/UDP及认证,适用于绕过限制。选择代理协议应考虑安全、效率及匿名需求。
|
5天前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
26 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
下一篇
DDNS