Nginx搭建本地Https测试环境

/ 随笔 / 0 条评论 / 3303浏览

使用OpenSSL生成证书

windows下OpenSSL安装

下载openssl安装版

官网下载地址:https://www.openssl.org/source/ 项目GitHub地址: https://github.com/openssl/openssl 其他下载地址: http://slproweb.com/products/Win32OpenSSL.html https://oomake.com/download/openssl

安装OpenSSLL

双击安装,可修改安装路径后选择默认安装 安装完成后配置环境变量(安装目录\OpenSSL-Win64\bin)

证书生成

1.key的生成

openssl genrsa -des3 -out melon_local.key 2048 这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key: openssl rsa -in melon_local.key -out melon_local.key

2. 生成CA的crt

openssl req -new -x509 -key melon_local.key -out ca.crt -days 3650 生成的ca.crt文件是用来签署下面的melon_local.csr文件。

3. csr的生成方法

openssl req -new -key melon_local.key -out melon_local.csr 执行成功后提示要输入您的相关信息。填写说明: 1.Country Name: 填您所在国家的ISO标准代号,如中国为CN,美国为US 2.State or Province Name: 填您单位所在地省/自治区/直辖市,如北京市或 Beijing 3.Locality Name: 填您单位所在地的市/县/区,如昌平或Changping 4.Organization Name: 填您单位/机构/企业合法的名称,如广东数字证书认证中心或Guangdong Certification Authority Co.,Ltd. 5.Organizational Unit Name: 填:部门名称,如技术支持部或Technical support 6.Common Name: 填:域名,如:*.xxx.com 在多个域名时,填主域名,如果为了https申请,这个必须和域名吻合 7.Email Address: 填您的邮件地址,不必输入,按回车跳过 8.‘extra’attributes
从信息开始的都不需要填写,按回车跳过直至命令执行完毕,除第1、6、7、8项外,2-5的信息填写请统一使用中文或者英文填写。并确保您填写的所有内容和您提交到的证书颁发单位内容一致,以保证SSL证书的签发。生成的csr文件交给CA签名后形成服务端自己的证书。

4. crt生成方法

openssl x509 -req -days 3650 -in melon_local.csr -CA ca.crt -CAkey melon_local.key -CAcreateserial -out melon_local.crt 输入key的密钥后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的密钥,-CAserial指明序列号文件,而-CAcreateserial指明文件不存在时自动生成。 最后生成了私用密钥:melon_local.key和自己认证的SSL证书:melon_local.crt

Nginx配置SSL


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  dash.xxx.com;

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://127.0.0.1:35008/; #新后台
        }

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    # HTTPS server
    server {
        listen       443 ssl;
        server_name  dash.xxx.com;

        ssl_certificate      ./ssl/melon_local.crt;
        ssl_certificate_key  ./ssl/melon_local.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            proxy_pass   http://127.0.0.1:35008/; #新后台
        }
    }
}

可以通过将证书导入到“受信任的根证书颁发机构”存储区中解决该问题。

1. win+r 运行mmc

1

2. 文件>添加删除管理单元;

2

3. 在可用的管理单元中选择”证书“,点击添加-->确定;

3

4. 在控制节点中展开证书-->受信任的证书颁发机构-->证书,右击所有任务-->导入.

4

5. 最后,浏览文件导入你的证书即可。

扩展资料:

从技术上讲,证书其实包含三部分,用户的信息,用户的公钥,还有CA中心对该证书里面的信息的签名。验证一份证书的真伪(即验证CA中心对该证书信息的签名是否有效),需要用CA 中心的公钥验证,而CA中心的公钥存在于对这份证书进行签名的证书内,故需要下载该证书,但使用该证书验证又需先验证该证书本身的真伪,故又要用签发该证书的证书来验证,这样一来就构成一条证书链的关系,这条证书链在哪里终结呢?

答案就是根证书,根证书是一份特殊的证书,它的签发者是它本身,下载根证书就表明您对该根证书以下所签发的证书都表示信任,而技术上则是建立起一个验证证书信息的链条,证书的验证追溯至根证书即为结束。所以说用户在使用自己的数字证书之前必须先下载根证书。