生成密钥和 CA 证书步骤

  1. 生成 key 密钥
  2. 生成证书签名请求文件(csr 文件)
  3. 生成证书签名文件(CA 文件)

    前期准备

    确认安装了 openssl。

  4. 确认 openssl 在本地存在。

  5. 确认 nginx 编译了 openssl 模块。
    1. [root@localhost ~]# openssl version
    2. OpenSSL 1.0.2k-fips 26 Jan 2017
    HTTPS证书初体验 - 图1
    1. [root@localhost ~]# rpm -qa|grep open
    2. openssl-1.0.2k-8.el7.x86_64
    3. openssl-devel-1.0.2k-8.el7.x86_64
    4. openldap-2.4.40-9.el7_2.x86_64
    5. openssh-6.6.1p1-25.el7_2.x86_64
    6. openssh-server-6.6.1p1-25.el7_2.x86_64
    7. openssl-libs-1.0.2k-8.el7.x86_64
    8. openssh-clients-6.6.1p1-25.el7_2.x86_64

    生成key文件

    1. openssl genra -idea -out dengj.key 1024
    idea: 一种非对称加密算法
    out:输出
    1024:加密精度,数字越大,加密性越好

    生成证书签名请求文件

    1. openssl req -new -key dengj.key -out dengj.csr

    生成证书签名文件

    1. openssl x509 -req -days 3650 -in dengj.csr -signkey dengj.key -out dengj.crt

    生成的3个文件

    HTTPS证书初体验 - 图2

    HTTPS 语法

    1. Syntax: ssl on|off;
    2. Default: ssl off;
    3. Context: http, server
    1. Syntax: ssl_certificate file;
    2. Default:
    3. Context: http, server
    1. Syntax: ssl_certificate_key file;
    2. Default:
    3. Context: http, server

    示例

    1. server
    2. {
    3. listen 443;
    4. server_name dengj.ojandapple.site;
    5. ssl on;
    6. ssl_certificate /etc/nginx/ssl_key/dengj.crt;
    7. ssl_certificate_key /etc/nginx/ssl_key/dengj.key;
    8. #ssl_certificate_key /etc/nginx/ssl_key/jesonc_nopass.key;
    9. index index.html index.htm;
    10. location / {
    11. root /opt/app/code;
    12. }
    13. }
    访问 https://dengj.ojandapple.site/1.html 出现下面的页面:

HTTPS证书初体验 - 图3
因为证书是自己生成的,浏览器无法校验真实性。正规流程是拿着 key 文件和 csr 文件去权威网站申请 CA 证书。有正规的 CA 证书,就不会出现上面的提示了。