nginx配置https证书双向认证

目标

        使用openssl生成证书并配置到nginx.

步骤

        1. 生成服务端证书和客户端证书

        2. 配置nginx并重启

        3. 本地浏览器导入客户端证书

        4. 测试验证

证书制作详细过程

# 1 创建目录
mkdir -p keys/private && mkdir -p keys/certs
cd keys
# 2 生成根证书:

    #生成根证书私钥
    openssl genrsa -aes256 -out private/ca.pem 1024
    #输入自己的密码 59001100
    #生产根证书签名请求
    openssl req -new -key private/ca.pem -out private/ca.csr
    #密码 59001100
    #生产根证书 有效期7300天 
    openssl x509 -req -days 7300 -sha1 -extensions v3_ca -signkey private/ca.pem -in private/ca.csr -out certs/ca.cer

# 3 生成服务器证书

    # 生产服务器证书私钥
    openssl genrsa -aes256 -out private/server-key.pem 1024
    # 密码 59001100  这里建议使用区别与跟证书私钥的密码
    # 生产服务器证书签名请求
    openssl req -new -key private/server-key.pem -out private/server.csr -subj "/C=CN/ST=BEIJING/L=BEIJING/O=MOGO/CN=server.mogo.com"
    # 密码 59001100
    # 生产服务器证书
    openssl x509 -req -days 7300 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.pem -CAcreateserial -in private/server.csr -out certs/server.cer

# 4 生成客户端证书

    # 生产客户端证书私钥
    openssl genrsa -aes256 -out private/client-key.pem 1024
    #设定自己的密码,客户端密码 13131313
    # 生产客户端证书签名请求,里面的-subj信息请替换掉
    # 其中的内容C=CN中的CN代表中国,后面的两个BEIJING分别代表省和市,O=MOGO中的MOGO为公司简称,CN=mogo.com中后面的mogo.com请设定你的服务名,与服务证书的名称不能一样 ; 下面命令需要输入客户端私钥的密码
    openssl req -new -key private/client-key.pem -out private/client.csr -subj "/C=CN/ST=BEIJING/L=BEIJING/O=MOGO/CN=mogo.com"
    # 创建一个文件,并标记证书版本号为01,也可以自定义版本号,使用0到F之间的16进制数值
    touch ca.srl && echo 01 >ca.srl
    # 生产客户端证书 下面的命令运行时需要输入跟证书私钥的密码 59001100
    openssl x509 -req -days 7300 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.pem -CAserial ca.srl -in private/client.csr -out certs/client.cer

# 5 导出客户端/服务器端证书仓库

    # 导出客户端证书仓库
    openssl pkcs12 -export -clcerts -name client -inkey private/client-key.pem -in certs/client.cer -out certs/client.keystore
    # 输入客户端私钥密码 13131313
    
    # 导出服务器端证书仓库
    openssl pkcs12 -export -clcerts -name client -inkey private/server-key.pem -in certs/server.cer -out certs/server.keystore
    # 输入服务端私钥密码 59001100

# 6 服务端私钥导出无密码私钥,用于nginx配置

    openssl rsa -in private/server-key.pem -out private/server-key.unsecure

nginx配置过程

  server {
        listen       443;
        ssl on;
        server_name  tracing-coll-test.zhidaoauto.com;
        ssl_certificate keys/certs/server.cer;
        ssl_certificate_key keys/private/server-key.unsecure;
        ssl_client_certificate keys/certs/ca.cer;
        ssl_verify_client on;
        location / {
            root   html;
            index  index.html index.htm;
        }

  }

        配置好后需要重启 killall nginx && cd sbin && sudo ./nginx

        注意事项:443端口必须使用root权限才能起来。

本地导入客户端证书

        以火狐为例:

        在浏览器右侧找到设置》搜索“证书”〉打开“查看证书”

        或者接在火狐浏览器输入:about:preferences#searchResults

        或在chrome中输入chrome://settings/

导入client.keystore证书,导入时需要输入密码,客户端私钥密码13131313

浏览器测试

        https://IP:443

        提示不安全,需要手动选择信任,并选择导入的证书。

此时如果没有证书则返回400  No required SSL certificate was sent

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值