资讯专栏INFORMATION COLUMN

升级你的hexo为https

james / 3434人阅读

摘要:可以使用多个添加多个域名可以帮我们自动注册证书,是静态资源所指的路径。输入命令之后选择即可,后续将会让你继续输入邮箱信息如果出现字样,则证明证书已被自动注册。

</>复制代码

  1. 本文以Debian 8为服务器栗子

最近升级了个人博客为https协议,写一个详细的教程帮助更多人升级https。

https的详细原理在此文中省略,简略来说,既是客户端在访问服务器时需要一个数字证书(里面包括公钥),它由权威机构(CA, Certificate Authority)颁发,来确认公钥确实是服务器发出来的。

证书价格不菲,大概7天需要几美金到几百美金不等(根据认证的等级和域名覆盖范围区分),所以很多证书都是商业级的,提供给商业网站使用。

获取免费证书

那么个人将无法获取数字证书么?不是的,为了鼓励https的普及,EFF成立了免费证书最大的提供商为Let’s Encrypt,可以提供免费证书。那么小型的网站,就可以使用免费证书升级为https啦。

当然Let’s Encrypt生成的证书,只能是单域名的,而且只有最低级的域名验证。

克隆letsencrypt客户端

</>复制代码

  1. $ git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

</>复制代码

  1. 如果遇到权限问题,记得先创建/opt/letsencrypt文件夹再,更改文件夹权限为可写入。
注册证书 Nginx指向静态路径注册证书

注册一个域名证书非常简单,使用letsencrypt就能生成https所需的证书。当然,用letsencrypt生成的证书只支持域名验证,只需要用letsenctypt的自动注册证书命令,证明这个域名是自己的是用的即可。

</>复制代码

  1. $ cd /opt/letsencrypt
  2. $ ./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参数。

</>复制代码

  1. $ cd /opt/letsencrypt
  2. $ ./letsencrypt-auto certonly -d ca.chanchun.com.cn

输入命令之后

</>复制代码

  1. How would you like to authenticate with the ACME CA?
  2. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  3. 1: Nginx Web Server plugin (nginx)
  4. 2: Spin up a temporary webserver (standalone)
  5. 3: Place files in webroot directory (webroot)
  6. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  7. Select the appropriate number [1-3] then [enter] (press "c" to cancel):

选择1即可,后续将会让你继续输入邮箱信息

如果出现Congratulations!字样,则证明证书已被自动注册。

Nginx配置

直到这一步,证书已经就绪,只要配置好Nginx即可完美升级https。Nginx安装、启动教程请具体请教Nginx教程。

转发到本地服务Nginx配置Sample:

</>复制代码

  1. #http重定向到https配置 证书验证配置
  2. server {
  3. listen 80;
  4. server_name ca.chanchun.com.cn; # 这里写你的域名
  5. location ^~ /.well-known/acme-challenge/ { # 不要修改 letsencrypt需要验证你的域名
  6. default_type "text/plain";
  7. proxy_pass http://localhost:3000; # 填写你需要转发的服务器地址
  8. }
  9. location = /.well-known/acme-challenge/ { # 不要修改 letsencrypt需要验证你的域名
  10. return 404;
  11. }
  12. return 301 https://$server_name$request_uri;
  13. }
  14. # https配置
  15. server {
  16. # SSL Configuration
  17. listen 443 ssl;
  18. server_name ca.chanchun.com.cn; # 这里写你的域名
  19. # copy from https://cipherli.st
  20. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  21. ssl_prefer_server_ciphers on;
  22. ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
  23. ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
  24. ssl_session_cache shared:SSL:10m;
  25. ssl_session_tickets off; # Requires nginx >= 1.5.9
  26. ssl_stapling on; # Requires nginx >= 1.3.7
  27. ssl_stapling_verify on; # Requires nginx => 1.3.7
  28. resolver 8.8.8.8 8.8.4.4 valid=300s;
  29. resolver_timeout 5s;
  30. add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
  31. add_header X-Frame-Options DENY;
  32. add_header X-Content-Type-Options nosniff;
  33. # specify cert files
  34. ssl_certificate /etc/letsencrypt/live/ca.chanchun.com.cn/fullchain.pem; # 中间填写你的域名
  35. ssl_certificate_key /etc/letsencrypt/live/ca.chanchun.com.cn/privkey.pem; # 中间填写你的域名
  36. location / {
  37. proxy_pass http://localhost:3000; # 填写你需要转发的服务器地址
  38. }
  39. }
指向静态文件Nginx配置Sample:

</>复制代码

  1. server {
  2. listen 80;
  3. server_name me.chanchun.com.cn; # 这里写你的域名
  4. location ^~ /.well-known/acme-challenge/ {
  5. default_type "text/plain";
  6. root /var/www/me; # 这里写你的静态文件目录
  7. }
  8. location = /.well-known/acme-challenge/ {
  9. return 404;
  10. }
  11. return 301 https://$server_name$request_uri;
  12. }
  13. server {
  14. # SSL Configuration
  15. listen 443 ssl;
  16. server_name me.chanchun.com.cn; # 这里写你的域名
  17. # specify cert files
  18. ssl_certificate /etc/letsencrypt/live/me.chanchun.com.cn/fullchain.pem; # 中间写你的域名
  19. ssl_certificate_key /etc/letsencrypt/live/me.chanchun.com.cn/privkey.pem; # 中间写你的域名
  20. location / {
  21. root /var/www/me; # 这里写你的静态文件目录
  22. index index.html index.htm; # 这里写你暴露的静态文件
  23. }
  24. }

Nginx配置各有各的配置方法,这里只要保证四点:

域名配置正确

静态文件目录路径、本地服务目录路径配置正确

.well-known/acme-challenge目录配置正确

要保证80默认端口和443ssl端口都有配置

如果配置好Nginx,那么访问网站就会有绿色的小钥匙啦,说明你的https站点搭建好。

自动更新证书

letsencrypt证书最多只有90天,90天之后我们需要重新注册证书,当然这个可以交给服务器自己做啦。

验证自己的证书是否可以更新

</>复制代码

  1. $ cd /opt/letsencrypt
  2. $ ./letsencrypt-auto renew --dry-run

</>复制代码

  1. 此命令只是验证 不会更新证书

如果出现Congratulations!字样或者已经更新字样则证明可以自动更新。如果出现错误,或者说路径找不到的情况,大多数情况是.well-known/acme-challenge目录配置没有正确的配置成功

编写crontab脚本

</>复制代码

  1. $ crontab -e

脚本内容

</>复制代码

  1. 30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

</>复制代码

  1. 如果遇到权限问题,可先创建/var/log目录再设置其权限为可写入
成功

享受https的绿色小锁吧!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40016.html

相关文章

  • 追求阅读舒适度的 Hexo博客主题hexo-theme-cafe

    摘要:主题旨在追求简约操作简单阅读舒适度。英文版介绍,目前版本主要调整了整体的样式,布局细调,以及新增一些等,后期会在使用的过程中不断进行调整。您可以使用减记语法或标签插件添加你的照片。 hexo-theme-cafe Cafe 主题旨在追求简约、操作简单、阅读舒适度。 英文版介绍 Read in English Inspire by Landscape,目前版本主要调整了整体的样式,布局细...

    princekin 评论0 收藏0
  • 追求阅读舒适度的 Hexo博客主题hexo-theme-cafe

    摘要:主题旨在追求简约操作简单阅读舒适度。英文版介绍,目前版本主要调整了整体的样式,布局细调,以及新增一些等,后期会在使用的过程中不断进行调整。您可以使用减记语法或标签插件添加你的照片。 hexo-theme-cafe Cafe 主题旨在追求简约、操作简单、阅读舒适度。 英文版介绍 Read in English Inspire by Landscape,目前版本主要调整了整体的样式,布局细...

    eechen 评论0 收藏0
  • 追求阅读舒适度的 Hexo博客主题hexo-theme-cafe

    摘要:主题旨在追求简约操作简单阅读舒适度。英文版介绍,目前版本主要调整了整体的样式,布局细调,以及新增一些等,后期会在使用的过程中不断进行调整。您可以使用减记语法或标签插件添加你的照片。 hexo-theme-cafe Cafe 主题旨在追求简约、操作简单、阅读舒适度。 英文版介绍 Read in English Inspire by Landscape,目前版本主要调整了整体的样式,布局细...

    xiaowugui666 评论0 收藏0
  • 每周前端开源推荐第四期

    摘要:每周前端开源推荐第四期上一期介绍了很多实时框架,不知大家有没有去体验一下实时的乐趣。在上面融了,上周在上面开源,一周的时间,数已经了,火的一塌糊涂。 每周前端开源推荐第四期 mozilla / togetherjs A service for your website that makes it surprisingly easy to collaborate in real...

    chaosx110 评论0 收藏0

发表评论

0条评论

james

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<