如何使用https 客户端证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用https 客户端证书相关的知识,希望对你有一定的参考价值。

申请https证书(即SSL证书)的具体流程:
第一步,生成并提交CSR(证书签署请求)文件
CSR文件一般都可以通过在线生成(或服务器上生成),申请人在制作的同时系统会产生两个秘钥,公钥CSR和密钥KEY。选择了SSL证书申请之后,提交订单并将制作生成的CSR文件一起提交到证书所在的CA颁发机构。
第二步,CA机构进行验证
CA机构对提交的SSL证书申请有两种验证方式:
第一种是域名认证。系统自动会发送验证邮件到域名的管理员邮箱(这个邮箱是通过WHOIS信息查询到的域名联系人邮箱)。管理员在收到邮件之后,确认无误后点击我确认完成邮件验证。所有型号的SSL证书都必须进行域名认证。
第二种是企业相关信息认证。对于SSL证书申请的是OV SSL证书或者EV SSL证书的企业来说,除了域名认证,还得进行人工核实企业相关资料和信息,确保企业的真实性。
第三步,CA机构颁发证书
由于SSL证书申请的型号不同,所验证的材料和方式有些区别,所以颁发时间也是不同的。
如果申请的是DV SSL证书最快10分钟左右就能颁发。如果申请的是OV SSL证书或者EV SSL证书,一般3-7个工作日就能颁发。
参考技术A 需要https站点开启了验证客户端证书,而且客户端证书是https需要的。将客户证书放在bundle里,之后用libcurl的setopt设置cert的路径,而且还可以设置服务器验证的一些属性,https证书签发CA沃通wosign网站有相关资料。 参考技术B 需要https站点开启了验证客户端证书,而且客户端证书是https需要的——沃通(wosign)专业的数字证书ca机构 参考技术C HTTPS适用于服务端的,客户端不需要安装。

https网络编程——如何利用中继证书(凭证)建立客户端证书

参考:如何利用中继证书(凭证)建立客户端证书
地址:https://qingmu.blog.csdn.net/article/details/108226592?spm=1001.2014.3001.5502

目录

建立客户端证书的前提是要建立中继证书

自建根证书详解
中继证书建立详解

并且需要安装openssl库:

sudo apt-get install openssl

建立客户端证书的具体步骤

本实验是在根证书和中继证书的前提下完成的,可参考根证书的建立和中继证书的建立

1、建立一个目录,存放所有客户端证书有关的资料

输入命令(注意路径哦):

mkdir client
cd client

2、填写Open SSL的配置文件

文件名:openssl_csr.cnf
路径:client目录下

具体内容:

[ req ]
# req 工具需要的參數.
default_bits       = 2048
distinguished_name = req_distinguished_name
string_mask        = utf8only
default_md         = sha256

[ req_distinguished_name ]
# 产生证书时要输入的资料说明.
countryName            = Country Name (2 letter code)
stateOrProvinceName    = State or Province Name
localityName           = Locality Name
0.organizationName     = Organization Name
organizationalUnitName = Organizational Unit Name
commonName             = Common Name
emailAddress           = Email Address

3、在客户端凭证目录产生凭证的私钥

文件名:client.key.pem
路径:client目录下

输入命令:

openssl genrsa -aes256 -out client.key.pem 4096
会提示输入私钥的密码, 例如是 helen123
Enter pass phrase for server.key.pem:helen123
再次输入密码:
Verifying - Enter pass phrase for server.key.pem:helen123


更改私钥的权限为只读:

chmod 400 client.key.pem

4、在服务器凭证目录产生服务器凭证的凭证签发申请档

输入命令:

openssl req -config openssl_csr.cnf -new -sha256 -key client.key.pem -out client.csr.pem
会提示输入服务器证书的私钥的密码, 也就是 helen123
Enter pass phrase for server.key.pem:helen123

# 接着输入证书拥有者的信息
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank For some fields there will be a default value,
If you enter '.', the field will be left blank.

# 所在国家的缩写, 2 个字母
Country Name (2 letter code) []:AU
# 所在的州或省.
State or Province Name []:New South Wales
# 所在的城市.
Locality Name []:Sydney
# 所在的公司.
Organization Name []:Helen
# 所在的公司的单位.
Organizational Unit Name []:Helen
# 证书名称
Common Name []:helen@personal
# 邮箱
Email Address []:helen@personal

5、使用中继凭证去签发客户端凭证的凭证签发申请档, 产生客户端的凭证

在中继证书目录下操作.

cd ../intermediate


签发凭证签发申请档, 有效期限是 3650 天.
输入命令:

openssl ca -config openssl_intermediate_ca.cnf -extensions client_cert -days 365 -notext -md sha256 -in ../client/client.csr.pem -out ../client/client.cert.pem
# 会提示需要输入根凭证的私钥密码, 也就是 bob123
Enter pass phrase for /ca/intermediate/private/intermediate_ca.key.pem:bob123

# 接著会显示要签发的凭证签发申请档的内容.
Check that the request matches the signature
Signature ok
Certificate Details:
...
# 并询问是否签发, 输入 y
Sign the certificate? [y/n]:y
# 以及询问是否纪录签发的凭证到资料库 (index.txt, serial), 输入 y
1 out of 1 certificate requests certified, commit? [y/n]y


变更签发的凭证的存取权限为只读
输入命令:

chmod 444 ../client/client.cert.pem

6、检查签发的中继凭证是否无误.

输入命令:

openssl x509 -noout -text -in ../client/client.cert.pem

# 使用的算法
Signature Algorithm: sha256WithRSAEncryption

# 公钥的长度
Subject Public Key Info:
        Public-Key: (4096 bit)

# 有效日期.
Validity:
    Not Before: Aug  4 23:59:15 2017 GMT
    Not After : Aug  4 23:59:15 2018 GMT

# 主旨 (Helen 的资料).
Subject: C=AU, ST=New South Wales, O=Helen, OU=Helen,CN=helen@personal/emailAddress=helen@local
# 签发者 (Bob 的资料).
Issuer: C=US, ST=California, O=Bob Ltd, OU=Bob Ltd Certificate Authority, CN=Bob Ltd Intermediate CA/emailAddress=bob@local

7、确认服务器凭证的完整性, 需要做完整的串链检查, 需要使用含有根凭证的凭证串链.

输入命令:

openssl verify -CAfile chain/chain.cert.pem ../client/client.cert.pem

显示 OK 表示正确.
…/client/client.cert.pem: OK

8、产生服务器凭证的凭证串链.

回到客户端证书目录里

cd ../client


产生证书串链:

cat client.cert.pem ../intermediate/chain/chain.cert.pem > client_chain.cert.pem

变更串链的读取权限为只读:

chmod 444 client_chain.cert.pem

9、客户端证书建立完成

以上是关于如何使用https 客户端证书的主要内容,如果未能解决你的问题,请参考以下文章

EzHttp 使用Https协议时证书如何部署

无论证书有效性如何,我的 node.js https 客户端始终有效

如何将 JKS 证书用于 NODE https 客户端请求

如何使用Fiddler抓取移动端https协议包

如何使用客户端上的“requests”模块和服务器上的“flask-restful”验证 https 请求的自签名证书(TLS1.2)

jodd http客户端如何设置忽略证书