摘要:可以使用多个添加多个域名可以帮我们自动注册证书,是静态资源所指的路径。输入命令之后选择即可,后续将会让你继续输入邮箱信息如果出现字样,则证明证书已被自动注册。
本文以Debian 8为服务器栗子
最近升级了个人博客为https协议,写一个详细的教程帮助更多人升级https。
https的详细原理在此文中省略,简略来说,既是客户端在访问服务器时需要一个数字证书(里面包括公钥),它由权威机构(CA, Certificate Authority)颁发,来确认公钥确实是服务器发出来的。
证书价格不菲,大概7天需要几美金到几百美金不等(根据认证的等级和域名覆盖范围区分),所以很多证书都是商业级的,提供给商业网站使用。
获取免费证书那么个人将无法获取数字证书么?不是的,为了鼓励https的普及,EFF成立了免费证书最大的提供商为Let’s Encrypt,可以提供免费证书。那么小型的网站,就可以使用免费证书升级为https啦。
当然Let’s Encrypt生成的证书,只能是单域名的,而且只有最低级的域名验证。
克隆letsencrypt客户端$ git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
如果遇到权限问题,记得先创建/opt/letsencrypt文件夹再,更改文件夹权限为可写入。注册证书 Nginx指向静态路径注册证书
注册一个域名证书非常简单,使用letsencrypt就能生成https所需的证书。当然,用letsencrypt生成的证书只支持域名验证,只需要用letsenctypt的自动注册证书命令,证明这个域名是自己的是用的即可。
$ cd /opt/letsencrypt $ ./letsencrypt-auto certonly -a webroot --webroot-path=/var/www/me -d me.chanchun.com.cn # 可以使用多个 -d 添加多个域名
letsencrypt可以帮我们自动注册证书,--webroot-path是静态资源所指的路径。-d是域名域名,也可以多个-d增加多个域名。最后确保使用https的域名都被letsencrypt注册。
后续将会让你继续输入邮箱信息
如果出现Congratulations!字样,则证明证书已被自动注册。
Nginx转发型注册证书如果是使用Nginx直接重定向服务器本地服务,非静态资源,就省略--webroot-path和-a参数。
$ cd /opt/letsencrypt $ ./letsencrypt-auto certonly -d ca.chanchun.com.cn
输入命令之后
How would you like to authenticate with the ACME CA? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: Nginx Web Server plugin (nginx) 2: Spin up a temporary webserver (standalone) 3: Place files in webroot directory (webroot) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-3] then [enter] (press "c" to cancel):
选择1即可,后续将会让你继续输入邮箱信息
如果出现Congratulations!字样,则证明证书已被自动注册。
Nginx配置直到这一步,证书已经就绪,只要配置好Nginx即可完美升级https。Nginx安装、启动教程请具体请教Nginx教程。
转发到本地服务Nginx配置Sample:#http重定向到https配置 证书验证配置 server { listen 80; server_name ca.chanchun.com.cn; # 这里写你的域名 location ^~ /.well-known/acme-challenge/ { # 不要修改 letsencrypt需要验证你的域名 default_type "text/plain"; proxy_pass http://localhost:3000; # 填写你需要转发的服务器地址 } location = /.well-known/acme-challenge/ { # 不要修改 letsencrypt需要验证你的域名 return 404; } return 301 https://$server_name$request_uri; } # https配置 server { # SSL Configuration listen 443 ssl; server_name ca.chanchun.com.cn; # 这里写你的域名 # copy from https://cipherli.st ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; # specify cert files ssl_certificate /etc/letsencrypt/live/ca.chanchun.com.cn/fullchain.pem; # 中间填写你的域名 ssl_certificate_key /etc/letsencrypt/live/ca.chanchun.com.cn/privkey.pem; # 中间填写你的域名 location / { proxy_pass http://localhost:3000; # 填写你需要转发的服务器地址 } }指向静态文件Nginx配置Sample:
server { listen 80; server_name me.chanchun.com.cn; # 这里写你的域名 location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /var/www/me; # 这里写你的静态文件目录 } location = /.well-known/acme-challenge/ { return 404; } return 301 https://$server_name$request_uri; } server { # SSL Configuration listen 443 ssl; server_name me.chanchun.com.cn; # 这里写你的域名 # specify cert files ssl_certificate /etc/letsencrypt/live/me.chanchun.com.cn/fullchain.pem; # 中间写你的域名 ssl_certificate_key /etc/letsencrypt/live/me.chanchun.com.cn/privkey.pem; # 中间写你的域名 location / { root /var/www/me; # 这里写你的静态文件目录 index index.html index.htm; # 这里写你暴露的静态文件 } }
Nginx配置各有各的配置方法,这里只要保证四点:
域名配置正确
静态文件目录路径、本地服务目录路径配置正确
.well-known/acme-challenge目录配置正确
要保证80默认端口和443ssl端口都有配置
如果配置好Nginx,那么访问网站就会有绿色的小钥匙啦,说明你的https站点搭建好。
自动更新证书letsencrypt证书最多只有90天,90天之后我们需要重新注册证书,当然这个可以交给服务器自己做啦。
验证自己的证书是否可以更新$ cd /opt/letsencrypt $ ./letsencrypt-auto renew --dry-run
此命令只是验证 不会更新证书
如果出现Congratulations!字样或者已经更新字样则证明可以自动更新。如果出现错误,或者说路径找不到的情况,大多数情况是.well-known/acme-challenge目录配置没有正确的配置成功
编写crontab脚本$ crontab -e
脚本内容
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
如果遇到权限问题,可先创建/var/log目录再设置其权限为可写入成功
享受https的绿色小锁吧!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/40016.html
摘要:主题旨在追求简约操作简单阅读舒适度。英文版介绍,目前版本主要调整了整体的样式,布局细调,以及新增一些等,后期会在使用的过程中不断进行调整。您可以使用减记语法或标签插件添加你的照片。 hexo-theme-cafe Cafe 主题旨在追求简约、操作简单、阅读舒适度。 英文版介绍 Read in English Inspire by Landscape,目前版本主要调整了整体的样式,布局细...
摘要:主题旨在追求简约操作简单阅读舒适度。英文版介绍,目前版本主要调整了整体的样式,布局细调,以及新增一些等,后期会在使用的过程中不断进行调整。您可以使用减记语法或标签插件添加你的照片。 hexo-theme-cafe Cafe 主题旨在追求简约、操作简单、阅读舒适度。 英文版介绍 Read in English Inspire by Landscape,目前版本主要调整了整体的样式,布局细...
摘要:主题旨在追求简约操作简单阅读舒适度。英文版介绍,目前版本主要调整了整体的样式,布局细调,以及新增一些等,后期会在使用的过程中不断进行调整。您可以使用减记语法或标签插件添加你的照片。 hexo-theme-cafe Cafe 主题旨在追求简约、操作简单、阅读舒适度。 英文版介绍 Read in English Inspire by Landscape,目前版本主要调整了整体的样式,布局细...
摘要:每周前端开源推荐第四期上一期介绍了很多实时框架,不知大家有没有去体验一下实时的乐趣。在上面融了,上周在上面开源,一周的时间,数已经了,火的一塌糊涂。 每周前端开源推荐第四期 mozilla / togetherjs A service for your website that makes it surprisingly easy to collaborate in real...
阅读 1802·2021-11-23 09:51
阅读 884·2021-10-08 10:05
阅读 3403·2021-09-26 09:55
阅读 1015·2021-09-22 15:21
阅读 1561·2021-09-09 09:33
阅读 1167·2019-08-30 15:56
阅读 1256·2019-08-30 15:55
阅读 938·2019-08-30 13:19