教你如何在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通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
1月前
|
安全 算法 数据建模
HTTPS证书类型和品牌一览
HTTPS证书(SSL证书)是保障网站数据传输安全与身份可信认证的重要工具,适用于电商、企业官网等各类平台。证书主要分为DV(域名验证)、OV(企业验证)、EV(扩展验证)三种安全级别,以及单域名、通配符、多域名等不同覆盖类型。品牌方面,既有高性价比的国产锐安信、CFCA,也有国际知名的Sectigo、Digicert。
|
4月前
|
监控 运维
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
本文介绍如何设置和查看域名或证书监控。步骤1:根据证书状态选择新增域名或证书监控,线上部署推荐域名监控,未部署选择证书监控。步骤2:查询监控记录详情。步骤3:在详情页查看每日定时检测结果或手动测试。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
|
4月前
|
Linux 持续交付 调度
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署
|
4月前
|
运维
HTTPS 证书自动化运维:https证书管理系统之自动化签发
通过访问【https://www.lingyanspace.com】注册账户,进入证书服务菜单并新增证书。填写域名(单域名、多域名或泛域名),创建订单后添加云解析DNS记录进行质检。确认完成后可下载证书,并支持后续查看、更新和定时更新功能。证书过期前15天自动更新,需配置邮箱接收通知。
HTTPS 证书自动化运维:https证书管理系统之自动化签发
|
4月前
|
机器学习/深度学习 人工智能 运维
HTTPS 证书自动化运维:展望未来发展趋势
HTTPS证书自动化运维正朝着更智能、高效和安全的方向发展。未来系统将提升自动化程度,减少人工干预,实现自动签发、续订与部署;深度集成多云平台,提供无缝管理体验;增强高级安全功能如加密算法和威胁检测;优化用户界面,降低使用门槛;支持更多操作系统,确保跨平台一致性;引入AI/ML技术,预测需求并自动解决问题;加强标准化与互操作性,促进生态系统协作。同时,系统将持续扩展功能、优化性能、支持国际化,并注重用户反馈,为全球用户提供优质的证书管理服务。
|
4月前
|
运维 监控 数据安全/隐私保护
HTTPS 证书自动化运维:HTTPS 证书管理系统之使用指南
本文详细介绍【灵燕空间HTTPS证书管理系统】(https://www.lingyanspace.com)的配置与使用,涵盖注册账户、邮箱配置及证书自动签发、监控和部署的一体化指南。通过页面顶部菜单的【视频教程】和【图文教程】,帮助用户从注册到实际应用全面掌握系统操作。最新迭代后,泛域名证书已包含根域名,无需额外申请多域名证书。
|
10天前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
92 20
|
20天前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
64 3
|
8月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性

热门文章

最新文章