zoukankan      html  css  js  c++  java
  • nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证

    服务端验证(ca机构证书)

    客户端验证(服务器自签证书)

    本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件

    这两个文件用于做服务器https验证

    配置如下:

    自签证书步骤如下:

    ca根证书生成

    创建ca私钥

    openssl genrsa -out ca.key 2048

    生成ca证书

    openssl req -new -x509 -days 36500 -key ca.key -out ca.crt

    客户端证书生成

    创建客户端私钥

    openssl genrsa -out client.pem 2048 
    openssl rsa -in client.pem -out client.key

    生成签发请求

    openssl req -new -key client.pem -out client.csr

    使用ca证书进行签发

    openssl x509 -req -sha256 -extfile /etc/pki/tls/openssl.cnf -extensions v3_req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 36500 -out client.crt

    验证签发证书是否正确

    [root@danny ca]# openssl verify -CAfile ca.crt client.crt
    client.crt: OK

    制作p12证书(导入浏览器)

    openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

    操作结束后目录文件

    [root@danny ca]# ls
    ca.crt  ca.key  ca.pem  ca.srl  client.crt  client.csr  client.key  client.p12  client.pem

    验证,导出client.p12点击安装至浏览器,重启浏览器。验证过程截图如下:

    未开启双向认证ssl_verify_client on时(客户端可以直接https访问)

    开启ssl_verify_client on但是没有安装客户端证书时

    安装证书并重启浏览器访问

    https证书管理中可看到已导入

     确认即可访问

    补充1:如果使用ca机构颁发的证书ssl_certificate,ssl_certificate_key 使用ca机构颁发的证书,客户端证书ssl_client_certificate使用自己生成的证书即可。

     

    补充2:在阿里云上申请的https证书的是pem格式,转成cer,crt

    openssl x509 -outform der -in xxx.pem -out xxx.cer
    openssl x509 -outform der -in xxx.pem -out xxx.crt

    补充3:crt文件转换为pem文件

    openssl x509 -in xxx.crt -out xxx.pem

    补充4:生成安卓所有bks包(windos的jdk环境命令行,具体步骤可百度)

    keytool -importcert -keystore client.bks -file client.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

    补充5:常见证书格式说明

    PKCS#7:Cryptographic Message Syntax Standard
    
    PKCS#10:Certification Request Standard
    
    PKCS#12:Personal Information Exchange Syntax Standard
    
    X.509:是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
    
    PKCS#7:常用的后缀是: .P7B .P7C .SPC
    
    PKCS#12:常用的后缀有: .P12 .PFX
    
    X.509:DER 编码(ASCII)的后缀是: .DER .CER .CRT
    
    X.509:PAM 编码(Base64)的后缀是: .PEM .CER .CRT
    
    .cer/.crt:是用于存放证书,它是2进制形式存放的,不含私钥。
    
    .pem:跟crt/cer的区别是它以Ascii来表示。
    
    pfx/p12:用于存放个人证书/私钥,他通常包含保护密码,2进制方式
    
    p10:是证书请求
    
    p7r:是CA对证书请求的回复,只用于导入
    
    p7b:以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
  • 相关阅读:
    在c#中用指针操作图片像素点
    获取exe目录
    MySQL数据库之安装
    简介、变量、常数、if、基础数据类型、注释、input()
    day 1 预习
    Typora基础
    内存流
    System.in流
    Java IO 操作
    字节流、字符流
  • 原文地址:https://www.cnblogs.com/dannylinux/p/10790772.html
Copyright © 2011-2022 走看看