https 免费证书配置

Posted SwiftClub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https 免费证书配置相关的知识,希望对你有一定的参考价值。

- nginx

Why?

为什么要搭建 https 服务

最近有计划写一个小程序, 发现有硬性条件,请求需要 https, 图片除外。 在我的记忆中,https 需要配置证书,并且基本上都是收费的,且价格昂贵。 以前阿里云是支持免费的 https 配置,现在也收费了。奈何资本只想体验下 程序开发,不想拖入太贵的成本。有没有免费搭建的呢?

What?

Let's Encrypt?

Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。

Let's Encrypt由互联网安全研究小组(英语:Internet Security Research Group)(缩写ISRG)提供服务。主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。

摘自 维基百科

Let's Encrypt 的真正意义在于加密流量。 Let's Encrypt 的最大的意义就是推动基础DV HTTPS证书的普及,换句话说就是,推动HTTPS的普及。 Let's Encrypt 的最大贡献是它的 ACME 协议,第一份全自动服务器身份验证协议,以及配套的基础设施和客户端。 废话不多说,怎么做?

ACME 协议?

自动证书管理环境 (Automated Certificate Management Environment)

Let's Encrypt 服务所签发的证书为域名认证证书(DV,Domain-validated Certificate)

签发这类证书需要域名所有者完成以下一种 Challenge 以证明自己对域名的所有权:

  • 验证申请人对域名的 Whois 信息中邮箱的控制权;

  • 验证申请人对域名的常见管理员邮箱(如以 admin@、postmaster@ 开头的邮箱等)的控制权;

  • 在 DNS 的 TXT 记录中发布一条 CA 提供的字符串;

  • 在包含域名的网址中特定路径发布一条 CA 提供的字符串。

不难发现,其中最容易实现自动化的一种操作必然为最后一条,ACME 协议中的 SimpleHTTP 认证即是用一种类似的方法对从未签发过任何证书的域名进行认证。该协议要求在访问 http://域名/.well-known/acme-challenge/指定字符串 时返回特定的字符串。

摘自 SSL/TLS 加密新纪元 - Let's Encrypt

How?

工具

  • acme.sh

  1. 安装 acme.sh

  2. 生成证书

  3. copy 证书到 nginx/apache 或者其他服务

  4. 更新证书

  5. 更新 acme.sh

具体步骤 这里

提示

  • 获取 accesskeys

    控制台 -> 账号 -> accesskeys 获取.


    1. export Ali_Key="ks****ey"

    2. export Ali_Secret="qmMDAqzPJ******Xb1"

  • 开启 443 端口的访问权限

    控制台 --> 云服务器 ESC ---> 网络和安全 ---> 安全组


nginx 配置

 
   
   
 
  1. cd /etc/nginx/sites-available

  2. vim default

 
   
   
 
  1. ## http www.xxx.com

  2. server {

  3.       listen 80 default_server;

  4.       listen [::]:80 default_server;

  5.       server_name www.xxx.com;

  6.       try_files $uri @proxy;

  7.       location @proxy {

  8.               proxy_pass http://127.0.0.1:8980;

  9.               proxy_pass_header Server;

  10.               proxy_set_header Host $host;

  11.               proxy_set_header X-Real-IP $remote_addr;

  12.               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  13.               proxy_pass_header Server;

  14.               proxy_connect_timeout 3s;

  15.               proxy_read_timeout 10s;

  16.       }

  17. }

  18. ### http  site.xxx.com

  19. server {

  20.        listen 80;

  21.        server_name site.xxx.com; # 更改

  22.        charset utf-8;

  23.        root  /var/www/site/dist/;

  24.        index index.html;

  25.        location / {

  26.                try_files $uri $uri/ @rewrites;

  27.        }

  28.        location @rewrites {

  29.                rewrite ^(.+)$ /index.html last;

  30.        }

  31. }

  32. # http api.xxx.com, 需要给子域名添加解析

  33. server {

  34.    listen 80;

  35.    server_name api.xxx.com; # 更改

  36.    return 301 https://$server_name$request_uri;  # 重写

  37. }

  38. # https api.xxx.com

  39. server {

  40.    listen 443 ssl;

  41.    server_name api.xxx.com; # 更改

  42.    ssl on;

  43.    ssl_certificate ssl/fullchain.cer;

  44.    ssl_certificate_key ssl/api.twicebook.top.key;

  45.    try_files $uri @proxy;

  46.        location @proxy {

  47.                proxy_pass http://127.0.0.1:8980;

  48.                proxy_pass_header Server;

  49.                proxy_set_header Host $host;

  50.                proxy_set_header X-Real-IP $remote_addr;

  51.                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  52.                proxy_pass_header Server;

  53.                proxy_connect_timeout 3s;

  54.                proxy_read_timeout 10s;

  55.        }

  56. }

总结

总体来说 https 的配置流程还是比较简单的, 但是还是有很多细节,所以总体配下来到可以正确访问到 https api, 花了一下午时间。 运维的工作需要的是耐心和细致。希望经过这次配置,自己以后可以非常 容易的完成这项配置。


以上是关于https 免费证书配置的主要内容,如果未能解决你的问题,请参考以下文章

TomcatTomcat配置https免费证书

https证书免费的好处,如何申请https证书

免费生成https证书以及配置

https(ssl)免费证书申请及nginx配置https(ssl)

购买免费ssl证书并配置

阿里云申请免费SSL证书并使用Nginx配置http强制跳转https。