python acme_使用 acme-tiny 工具生成 Let's Encrypt 的免费 SSL 证书-程序员宅基地

技术标签: python acme  

下载 acme-tiny

创建用户私钥和域名私钥 "创建用户私钥和域名私钥")创建用户私钥和域名私钥

mkdir -p /etc/ssl/letsencrypt/

cd /etc/ssl/letsencrypt/

openssl genrsa 4096 > account.key

openssl genrsa 4096 > domain.key

生成域名 csr 文件 "生成域名 csr 文件")生成域名 csr 文件

单域名

openssl req -new -sha256 -key domain.key -subj "/CN=www.yoursite.com" > domain.csr

多域名

ln -s /etc/pki/tls/openssl.cnf /etc/ssl/openssl.cnf

openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config domain.csr

配置 Web 站点的 challenge 文件 "配置 Web 站点的 challenge 文件")配置 Web 站点的 challenge 文件

mkdir -p /var/www/challenges/

#example for nginx

server {

listen 80;

server_name yoursite.com www.yoursite.com;

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

alias /var/www/challenges/;

try_files $uri =404;

}

...the rest of your config

}

生成 signed 文件 "生成 signed 文件")生成 signed 文件

wget -c https://raw.githubusercontent.com/yangphere/acme-tiny/master/acme_tiny.py --no-check-certificate

python acme_tiny.py --account-key /etc/ssl/letsencrypt/account.key --csr /etc/ssl/letsencrypt/domain.csr --acme-dir /var/www/challenges/ > /etc/ssl/letsencrypt/signed.crt

生成证书链 "生成证书链")生成证书链

v1 版,兼容性差点

wget -O - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /etc/ssl/letsencrypt/intermediate.pem

cat /etc/ssl/letsencrypt/signed.crt /etc/ssl/letsencrypt/intermediate.pem > /etc/ssl/letsencrypt/chained.pem

建议使用 v3 版

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > /etc/ssl/letsencrypt/intermediate.pem

cat /etc/ssl/letsencrypt/signed.crt /etc/ssl/letsencrypt/intermediate.pem > /etc/ssl/letsencrypt/chained.pem

生成 dh 证书 "生成 dh 证书")生成 dh 证书

openssl dhparam -out dhparam.pem 2048

配置 nginx 使 SSL 证书生效 "配置 nginx 使 SSL 证书生效")配置 nginx 使 SSL 证书生效

server {

listen 443;

server_name yoursite.com, www.yoursite.com;

ssl on;

ssl_certificate /etc/ssl/letsencrypt/chained.pem;

ssl_certificate_key /etc/ssl/letsencrypt/domain.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;

ssl_session_cache shared:SSL:50m;

ssl_dhparam /etc/ssl/letsencrypt/dhparam.pem;

ssl_prefer_server_ciphers on;

...the rest of your config

}

server {

listen 80;

server_name yoursite.com, www.yoursite.com;

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

alias /var/www/challenges/;

try_files $uri =404;

}

...the rest of your config

}

重启 nginx 服务 "重启 nginx 服务")重启 nginx 服务

service nginx reload

自动生成 SSL 证书 "自动生成 SSL 证书")自动生成 SSL 证书

由于 Let’s Encrypt 的证书只有 90 天的有效期,需要使用系统每个月生成一次。编辑 renew_cert.sh 文件

以下是 v1 版,兼容性差点

#!/usr/bin/shpython /etc/ssl/letsencrypt/acme_tiny.py --account-key /etc/ssl/letsencrypt/account.key --csr /etc/ssl/letsencrypt/domain.csr --acme-dir /var/www/challenges/ > /etc/ssl/letsencrypt/signed.crt || exit

wget -O - https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem > /etc/ssl/letsencrypt/intermediate.pem

cat /etc/ssl/letsencrypt/signed.crt /etc/ssl/letsencrypt/intermediate.pem > /etc/ssl/letsencrypt/chained.pem

service nginx reload

建议使用 v3 版

#!/usr/bin/shpython /etc/ssl/letsencrypt/acme_tiny.py --account-key /etc/ssl/letsencrypt/account.key --csr /etc/ssl/letsencrypt/domain.csr --acme-dir /var/www/challenges/ > /etc/ssl/letsencrypt/signed.crt || exit

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > /etc/ssl/letsencrypt/intermediate.pem

cat /etc/ssl/letsencrypt/signed.crt /etc/ssl/letsencrypt/intermediate.pem > /etc/ssl/letsencrypt/chained.pem

service nginx reload

添加可执行权限

chmod +x renew_cert.sh

编辑 crontab 文件

crontab -e

加入如下内容

0 0 1 * * /etc/ssl/letsencrypt/renew_cert.sh 2>> /var/log/acme_tiny.log

重启 crontab 服务

service crond restart

测试一下 SSL 质量 "测试一下 SSL 质量")测试一下 SSL 质量

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39792747/article/details/111068289

智能推荐

nodejs之异常的处理_node js 报symbol miss-程序员宅基地

文章浏览阅读2.4k次。===============同步捕获,var http = require('http');var fs = require('fs');var url = require('url');var routes=require('./models/routes');http.createServer(function (request, response) { var pathnam..._node js 报symbol miss

成语答题小程序源码_成语答题赚小程序v1.1.2前后端源码+小程序前端-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏8次。开源成语答题小程序源码采用云开发,无需搭建服务器,无需域名即可使用云端能力。目前成语答题小程序集成微信banner广告,视频广告,插屏广告,激励视频广告等功能,方便运营者赚取广告收益.。成语答题小程序一直被很多人休闲娱乐,成语小秀才更是占据整个小程序榜单首位,成语答题小程序简单又可以学习,让很多人都钟情于它。本代码有几大特点:成语答题小程序源码开发过程中考虑到云开发的免费额度,所以开发成语答题小程序设计中以减少数据请求次数,减少云函数调用为特点,用更少的调用次数服务更多的用户。让免费额度可以服务_成语答题赚小程序v1.1.2前后端源码+小程序前端

android 360加固后渠道会变化吗,解决walle多渠道打包之后,360加固失去渠道信息的问题...-程序员宅基地

文章浏览阅读163次。windows下面,先去下载https://github.com/Jay-Goo/ProtectedApkResignerForWalle,电脑要安装python的系统。修改channel中的渠道信息为自己需要的,修改config中的信息,如下:config的配置#!/usr/bin/python#-*-coding:utf-8-*-#keystore信息#Windows 下路径分割线请注意使用\..._360加固 多渠道 dex不一致

C++习题03_类和对象_构建一个book类,有四个私有数据成员-程序员宅基地

文章浏览阅读5.3k次,点赞15次,收藏111次。C++习题03_类和对象习题03(01)计算器类题目描述下面是一个计算器类的定义,请完成该类成员函数的实现,并编写main()。class Counter{public: Counter(int num); void increament(); //给原值增1 void decrement(); //给原值减1 int getValue(); //取得计数器值 void print(); //显示计数private: int value;}; _构建一个book类,有四个私有数据成员

There is insufficient memory for the Java Runtime Environment to continue._eclipse there is insufficient memory for the java -程序员宅基地

文章浏览阅读8.1k次,点赞4次,收藏10次。eclipse中运行项目问题提示信息从上图可看出#号第一条为:没有足够的内存让Java运行时环境继续运行。解决方法:修改Run Configurationsmaven项目在代码上右键,依次点击“Run As”->“Run Configurations”,在Arguments参数中的“VM arguments:”中填入如下值即可。-Xms64m -Xmx1..._eclipse there is insufficient memory for the java runtime environment to con

tensorboard在浏览器中打开问题_tensorboard换了地址但是浏览器显示的还是之前的-程序员宅基地

文章浏览阅读5.1k次,点赞4次,收藏12次。问题描述:在命令行切入到logs文件所在的盘后,输入tensorboard --logdir=D:\PycharmProjects\learn_tf\logs,出现如下命令:D:\>tensorboard --logdir=D:\PycharmProjects\learn_tf\logsTensorBoard 1.12.1 at http://HN-75P35Q2:6006 (Pres..._tensorboard换了地址但是浏览器显示的还是之前的

随便推点

初步学习FineUploader(java)-程序员宅基地

文章浏览阅读471次。一、认识FineUploader的功能:进入示例网站:https://fineuploader.com/demos.html#basic-setup; 二、准备相关的js,css Build Fine Uploader yourself from the GitHub repogit clone https://github.com/FineUploader/fine-up..._fineuploader包含demo和server端和最新的js

ssh-keygen认证密钥_ssh-keygen -f-程序员宅基地

文章浏览阅读1.9k次。ssh-keygen -f “/home/xt/.ssh/known_hosts” -R 145.192.1.20_ssh-keygen -f

广播到底啥啊,arp广播原理-程序员宅基地

文章浏览阅读9.7k次,点赞8次,收藏22次。1网络广播:网络广播是指一个节点同时向相同域中的其它所有节点传输数据包的过程。例如有4台主机, 分别为1号主机,2号主机,3号主机,4号主机. 假如1号主机 要给4号主机发数据! 如果是用广播传输方法的话! 那么4台主机都会收到数据包! 4台主机 在收数据包的时候 会查看数据包里的目标IP地址是不是自已的,是的话就收下,不是就不收!2.ARP广播原理:(1)A(135.24.25..._arp广播

STM8SPWM频率调节方式_stm8s输出pwm频率不对-程序员宅基地

文章浏览阅读6.7k次,点赞2次,收藏3次。CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);// 有些硬件会自动八分频 导致后面的计算出现错误_stm8s输出pwm频率不对

DbVisualizer10(破解)+ElasticSearch(x-pack-core-6.4.0破解])整合版_x-pack-sql-jdbc-6.4.0-程序员宅基地

文章浏览阅读4.4k次。先标记一下, 后面会详细整理:用DbVisualizer来直接使用ElasticSearch, 第一件事就是破解x-pack-core-6.4.0.不然你用Dbvis连接es会报错:dbvisualizer current license is non-compliant for [jdbc]dbvisualizer current license is non-complian..._x-pack-sql-jdbc-6.4.0

00-开篇词-这些年受过的PPT的苦_博客日志开版词ppt-程序员宅基地

文章浏览阅读311次。开篇词:这些年受过的PPT的苦1 有一种头型叫地中海程序猿在外人看来从来都是一个神秘的团体,一提起程序猿,在大多数人眼里,程序猿的智商是这个样子的:程序员的工作环境是这个样子的:那些都是别人眼里的程序猿,下面才是程序员真实的样子:所以程序猿的御用贴图是这个样子的:好吧,这明显和大家心目中的大神形象完全不符,在大家心中,没有他们搞不定的事情,除非?除非什么?除非没有女朋友?不是,..._博客日志开版词ppt

推荐文章

热门文章

相关标签