使用 Nginx 搭建 HTTPS 服务器

3 篇文章 0 订阅
2 篇文章 0 订阅

目录

SSL/TLS client/server 交互过程浅析

握手阶段

server 下发证书给 client, 证书中包含 server 的公钥(public key), 但证书是使用第三方私钥加密的(这里的私钥不是 server 的私钥,通常为 CA 机构的私钥,不做特殊说明,本文默认证书是 CA 机构签发的证书),client 拥有 CA 机构的公钥,因此可以解密证书,获取 server 下发的公钥。

client 获取到 server 的公钥之后使用该公钥加密 premaster secret 发送给 server, server 使用自己的私钥解密 premaster secret.

client 和 server 使用相同的算法将 premaster secret 转换成 master secret, 该密钥用于通信阶段。

通信阶段

client 和 server 使用握手阶段协商的 master secret 加密数据。

综上,非对称加密、证书用于握手阶段,对称加密用于通信阶段。

向 CA 机构申请 SSL/TLS 证书

由上文可知,证书中包含了 server 的公钥,因此,向 CA 机构申请证书时需要提交 server 的公钥, CA 机构用自己的私钥加密该公钥及其他信息生成证书。

天威诚信为例:
使用 AutoCSR 工具生成私钥(server.key)和证书请求文件(certreq.csr, 其中包含了 server 的公钥及其他相关信息), server.key 需要自己保管,certreq.csr 需要提交给天威诚信,天威诚信会返回如下信息:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

其中包含了三个证书,我们将其保存为 server.crt.

配置 Nginx

server.keyserver.crt 放到 nginx 配置文件目录下,nginx 配置文件内容如下:

    server {
        listen      2107 ssl;
        server_name www.example.com;

        # Enable all protocols except SSL 2 and SSL 3, which are obsolete and insecure.
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        # Have the server decide what suites to use.
        ssl_prefer_server_ciphers on;

        # This cipher suite configuration uses only suites that provide forward security, in the order that provides the best performance.
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

        # Server private key.
        ssl_certificate_key server.key;

        # Certificates; server certificate first, followed by all required intermediate certificates, but excluding the root.
        ssl_certificate server.crt;

        # ...
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值