zoukankan      html  css  js  c++  java
  • 免费生成https证书以及配置

    http升级到https需要在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
     
    参考地址:
     

    第二种:借助于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
    最好是根据官方网址来处理:
     
    2. 生成免费证书
    官方文档有比较详细的说明,根据自己的情况来选择
     
    注意:官方限制了每周的申请次数,如果你进行开发测试,生成证书的时候加上 --staging参数,这样就不必太担心数量的限制了
     
    下面介绍几种方法
    无论哪一种方法,实质都是验证你是不是拥有这个域名,只不过实现的途径不同
     
    1>webroot方法,此方法会在你配置的服务器站点目录下创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 http://example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器
     
    如果你自己没有创建相应的站点也可以自己加入一个比较通用的配置
    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 https://$server_name$request_uri;
    }
     
    参考地址:
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    异步无刷新上传文件而且上传文件能够带上參数
    利用BADI WORKORDER_INFOSYSTEM在COOIS中加入自己定义列办事处
    Printf可变參数使用
    评大北农今日复牌公告
    iOS Sprite Kit教程之申请和下载证书
    UVa 12587 Reduce the Maintenance Cost(Tarjan + 二分 + DFS)
    Python: scikit-image Blob detection
    linux命令ps aux|grep xxx详解
    复制和重命名表格--修改表注释
    md5 破解网站
  • 原文地址:https://www.cnblogs.com/redirect/p/6937437.html
Copyright © 2011-2022 走看看