资讯专栏INFORMATION COLUMN

Nginx 配置 SSL 证书 + 搭建 HTTPS 网站

BicycleWarrior / 3996人阅读

摘要:操作流程第一步,生成文件和文件第二步,提交文件到机构第三步,拿到文件第四步,三个文件放到目录下第五步,修改文件也可以不监听端口看需要一般的形式就配置好了为了更安全,可以考虑使用迪菲赫尔曼密钥交换然后在配置的后面加上下面的配

操作流程

第一步,生成csr文件和key文件

$ cd /etc/ssl/private
$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out maketea_loc.csr -keyout maketea_loc.key -subj "/C=CN/ST=Beijing/L=Beijing/O=maketea Inc./OU=Web Security/CN=*.maketea.loc"

第二步,提交csr文件到CA机构

第三步,拿到crt文件

第四步,maketea_loc.csr maketea_loc.key maketea_loc.crt 三个文件放到/etc/ssl/private目录下

第五步,修改nginx文件

server {  
    listen 80;#也可以不监听80端口 看需要
    listen 443 ssl;
    server_name www.maketea.loc;

    ssl on;
    ssl_certificate /etc/ssl/private/maketea_loc.crt;
    ssl_certificate_key /etc/ssl/private/maketea_loc.key;
}

一般的SHA-1形式https就配置好了

为了更安全 ,可以考虑使用迪菲-赫尔曼密钥交换

$ cd /etc/ssl/certs
$ openssl dhparam -out dhparam.pem 2048

然后在nginx ssl配置的后面加上下面的配置

ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
keepalive_timeout 70;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

同时,如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问

add_header Strict-Transport-Security max-age=63072000;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

同时也可以多带带开一个 Nginx 配置,把 HTTP 的访问请求都用 301 跳转到 HTTPS

server {  
        listen 80;
        server_name  www.maketea.loc;
        return 301 https://www.maketea.loc$request_uri;
}
颁发证书的机构

目前一般市面上针对中小站长和企业的 SSL 证书颁发机构有:

StartSSL

Comodo / 子品牌 Positive SSL

GlobalSign / 子品牌 AlphaSSL

GeoTrust / 子品牌 RapidSSL

其中 Postivie SSL、AlphaSSL、RapidSSL 等都是子品牌,一般都是三级四级证书,所以你会需要增加 CA 证书链到你的 CRT 文件里。

以 Comodo Positive SSL 为例,需要串联 CA 证书,假设你的域名是 example.com

那么,串联的命令是

$ cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.signed.crt

在 Nginx 配置里使用 example_com.signed.crt 即可

级联问题

有些时候,由第三方机构签发的证书在浏览器上是OK的,但是到了例如安卓端会不认这个证书,Nginx官方是这样说的

Some browsers may complain about a certificate signed by a well-known certificate authority, while other browsers may accept the certificate without issues. This occurs because the issuing authority has signed the server certificate using an intermediate certificate that is not present in the certificate base of well-known trusted certificate authorities which is distributed with a particular browser. In this case the authority provides a bundle of chained certificates which should be concatenated to the signed server certificate. The server certificate must appear before the chained certificates in the combined file

就是说需要有个中间证书

一般类似godaddy这种机构会提供这个证书给你,你要做的就是把这个串放在crt文件的后面,做成一个新的crt,就可以正常使用了

$ cat nginx.crt bundle.crt > nginx.chain.crt

测试的时候自签证书的方法

$ openssl ca -in nginx.csr -out nginx.crt

参考文献

https://s.how/nginx-ssl/
http://www.cnblogs.com/chjbbs...

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

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

相关文章

  • 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书

    摘要:由于上面我们已经新建了一个配置文件,这里就直接将反向代理的配置写在里面通过配置,我们反向代理到了端口的服务。六最后本文中,我们学习了如何通过快速搭建环境,并对其配置证书和反向代理,让网站能够以协议来访问。 欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习、面试资源哟!!个人网站: https://www.except...

    ZHAO_ 评论0 收藏0
  • Nginx配置https访问

    摘要:在这里我使用的是阿里云,里面提供一年免费证书什么是根据维基百科的解释超文本传输安全协议缩写,英语是超文本传输协议和的组合,用以提供加密通讯及对网络服务器身份的鉴定。配置我使用的是阿里云,其他云也一样。 在这里我使用的是阿里云ECS,里面提供一年免费SSL证书 1、什么是HTTPS 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer P...

    孙吉亮 评论0 收藏0
  • nginx+WordPress搭建个人博客全流程

    摘要:正好最近有一台空闲的于是来搭建一个玩玩。因此我们可以申请免费的证书,这个证书不但免费,而且操作非常简单,虽然每次只有天的有效期,但可以通过脚本配置定期更新。这个验证服务以后更新证书还要用到,要一直保留。创建一个并通过赋予执行权限。 0x00 前言         WordPress是世界上最受欢迎的CMS系统,它是基于php和MySQL技术栈的,并且还有很多插件,可扩展性非常强。正好最...

    WilsonLiu95 评论0 收藏0
  • 【图文】如何用云服务器搭建一个https网站

    摘要:推荐使用阿里云服务器。推荐使用阿里云的,我的网站就是搭建在阿里云的上,稳定下一个教程分享一下,如何优化站点的打开速度。所需材料:        1、域名1个。        2、虚拟机或者云服务器1台。        3、ssl证书1个。  前提准备:        1、域名最好要备案,在国内使用比较方便。         2、推荐使用阿里云服务器。(阿里云哪个地域节点的服务器好、速度快,...

    CodeSheep 评论0 收藏0
  • 搭建https服务--部署服务(2)

    摘要:这边以常用的为例。首先将在获取的证书,上传至服务器。修改的配置,并且重启,重启时需要输入证书密码。配置如下默认的是端口,默认的端口。 上一节介绍了HTPPS协议,以及获取HTPP证书的方法。这一节将介绍如何部署HTPPS服务。这边以常用的linux+nginx为例。1.首先将在startssl获取的证书,上传至服务器。2.修改nginx的配置,并且重启nginx,重启时需要输入证书密码...

    Drummor 评论0 收藏0

发表评论

0条评论

BicycleWarrior

|高级讲师

TA的文章

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