快捷搜索:

您的位置:澳门新葡4473网站 > 项目 > 免费生成https证书以及配置

免费生成https证书以及配置

发布时间:2019-10-15 00:12编辑:项目浏览(182)

    通过 Certbot 为 nginx 开启https支持。

    http升级到https需要在nginx的配置中加入证书信息,查询资料后确定生成证书两种方案

    环境

    • CentOS 7.1
    • python2.x(这玩意系统里本来就有)

     

    安装Nginx

    sudo yum install nginx -y
    

    顺手启动:

    sudo systemctl start nginx
    

    顺手设置开机启动:

    sudo systemctl enable nginx
    

    嗯,就完成了。 至于配置文件,会在后面设置。

    第一种:自签名证书,然后开启 CloudFlare 的 CDN 服务

     

    //确定是否安装openssl

    which openssl

    //如果没有安装,通过apt-get或者yum等方式安装即可

    sudo apt-get install openssl

    //生成一个名为“ssl.key”的 RSA key文件:执行结果:生成ssl.pass.key 和 ssl.key

    openssl genrsa -des3 -passout pass:x -out ssl.pass.key 2048

    openssl rsa -passin pass:x -in ssl.pass.key -out ssl.key

    //删除中间文件

    rm ssl.pass.key

    接着,利用已经生成的 ssl.key 文件,进一步生成 ssl.csr 文件:

    openssl req -new -key ssl.key -out ssl.csr

    执行此行命令会提示输入密码,按回车即可,因为前面我们在生成 ssl.key 时选择了密码留空。

    最后我们利用前面生成的 ssl.key 和 ssl.csr 文件来生成 ssl.crt 文件,也就是自签名的 SSL 证书文件:

    openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt

    这一步之后,我们得到一个自签名的 SSL 证书文件 ssl.crt,有效期为 365 天。此时,ssl.csr 文件也已经不再被需要,可以删除掉了:

    rm ssl.csr

     

    参考地址:

     

    配置https

    此处我们使用 Let's Encrypt 提供的证书。且为了方便设置,使用 Certbot 配置工具。

    第二种:借助于Let's Encrypt

     

    Let's Encrypt 简介

    如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从 Let's Encrypt 获得网站域名的免费的证书。

    Certbot 简介

    Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。

     

    1. 下载 certbot

    最好是根据官方网址来处理:

     

    图片 1图片 2

    2. 生成免费证书

    官方文档有比较详细的说明,根据自己的情况来选择

     

    注意:官方限制了每周的申请次数,如果你进行开发测试,生成证书的时候加上 --staging参数,这样就不必太担心数量的限制了

     

    下面介绍几种方法

    无论哪一种方法,实质都是验证你是不是拥有这个域名,只不过实现的途径不同

     

    1>webroot方法,此方法会在你配置的服务器站点目录下创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 来验证你的域名是否绑定的这个服务器

     

    如果你自己没有创建相应的站点也可以自己加入一个比较通用的配置

    location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; } location = /.well-known/acme-challenge/ { return 404; }

     

    certbot certonly --webroot -w 网站根目录 -d example.com -w 网站根目录 -d www.example.com

     

    2>standalone方法,如果你不想使用你自己的服务器,这个方法是个选择,但是需要注意要关闭相应的端口或者是80或者443(以你自己选择的方式决定)

    使用80端口: certbot certonly --standalone --preferred-challenges http -d example.com

    使用443端口: certbot certonly --standalone --preferred-challenges tls-sni -d example.com

     

    3>manual方法,如果你想在任意的linux主机下生成证书,那么这种方法可能是一个选择,但是要注意的是验证过程中会生成一个字符串,需要你将这个随机的字符串添加到你dns服务器才可以完成验证操作.

    certbot certonly --manual --preferred-challenges dns -d archerwong.cn

     

    3.删除证书,如果你生成的时候添加了 --stagin参数,下面的命令也要添加

    certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

    certbot delete --cert-name example.com

     

    4.证书更新

    sudo certbot renew --dry-run

     

    5.丰富的参数选择

    以上的各种命令其实都是可以加入很多参数,最好是查找下官方文档

     

    当然官方提供了很多种生成证书的方法,你可以根据你自己的实际情况进行选择

     

    证书生成完毕后,我们可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹,里面存放了指向证书的一些快捷方式。

     

    生成证书后,配置 Nginx

     

    打开 nginx server 配置文件加入如下设置:

    server {

      listen 443 ssl on;

      ssl_certificate /etc/letsencrypt/live/网站域名/fullchain.pem;

      ssl_certificate_key /etc/letsencrypt/live/网站域名/privkey.pem;

      ## 其他配置

    }

     

    强制跳转 https

    https 默认是监听 443 端口的,没开启 https 访问的话一般默认是 80 端口。如果你确定网站 80 端口上的站点都支持 https 的话加入下面的配件可以自动重定向到 https

    server {

      listen 80;

      server_name your.domain.com;

      return 301 ;

    }

     

    参考地址:

     

     

     

     

     

     

     

     

     

    工具获得

    证书机构: Let's Encrypt - https://letsencrypt.org
    配置工具: Certbot - https://certbot.eff.org/

    事实上,你根本用不到上面两个链接,我把它们写在这只是为了方便了解其他细节,顺便表示尊重。

    实际上我们可以直接通过包管理器获取 Certbot 工具。

    首先需要安装 EPEL 源:

    sudo yum install epel-release -y
    

    然后安装 Certbot :

    sudo yum install python2-certbot-nginx -y
    

    工具安装完成。

    使用 Certbot

    Certbot 使用命令行中的交互式配置,我们启动它,然后跟着指示一步一步完成就行。

    一、 启动 Certbot

    通过命令:

    sudo certbot --nginx
    

    二、 填写邮箱

    在下述提示后,填写你的邮箱地址。

    Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): xxxx@xxxx.com
    

    输入你的邮箱地址,回车确定。

    三、 同意用户协议

    下述提示提醒你阅读并同意用户协议之类的。

    Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf.
    You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (A)gree/(C)ancel: A
    

    输入字母 A 回车确定。

    四、 请求分享你的邮箱

    意思是他们会没事给你发发广告邮件。同意就是了 ╮(╯▽╰)╭

    Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    (Y)es/(N)o: Y
    

    输入字母 Y 回车确定。

    五、 指定域名

    由于我们在安装nginx后没有配置站点,所以此处要求我们提供域名,配置工具会帮我们填写nginx的配置文件。

    No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel): www.xxxx.com xxx.xxxx.com
    

    输入你自己的域名(多个域名中间用空格隔开)回车确定。

    六、 重定向

    会询问你是不是要把所有http请求重定向到https。当然要了~

    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: No redirect - Make no further changes to the webserver configuration.
    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. 
    You can undo this change by editing your web server's configuration.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
    

    输入数字 2 回车确定。

    七、 完成

    此时配置已经完成。你可以在接下来的输出中找到如下段落:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Congratulations! You have successfully enabled https://www.xxxx.com and https://xxx.xxxx.com
    
    You should test your configuration at:
    https://www.ssllabs.com/ssltest/analyze.html?d=www.xxxx.com
    https://www.ssllabs.com/ssltest/analyze.html?d=xxx.xxxx.com
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    

    意思就是你已经成功配置了 www.xxxx.com xxx.xxxx.com 两个域名(就是在 步骤五 输入的那两个,当然,你输入了多少个这里就会显示多少个)。
    并且你可以在 这个网站上测试域名的状态。

    八、 证书过期

    由于 Let's Encrypt 的免费证书有效期是90天,所以你需要每80几天重新申请一次。

    Certbot 可以通过简单的命令完成这个工作:

    certbot renew
    

    如果你还是觉得麻烦,可以把这个操作设为定时任务,每80几天运行一次,就可以高枕无忧了。

    其他

    支持https的nginx已经完全配置完成。接下来把你的站点放在nginx的目录下就行,一般是 /usr/share/nginx/html 如果不是这里,你可以在nginx的配置文件里找到,配置文件位于 /etc/nginx/nginx.conf

    在浏览器中打开站点,就能看到地址栏上的小绿锁了~


    原文发布于

    本文由澳门新葡4473网站发布于项目,转载请注明出处:免费生成https证书以及配置

    关键词: