求助delphi实现ssl验证客户端证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助delphi实现ssl验证客户端证书相关的知识,希望对你有一定的参考价值。
参考技术A 你好,全球可信,支持所有浏览器的SSL证书是不需要“要求客户端证书验证”的,因为他的根证书以及内置到各大浏览器和操作系统,只有自签名SSL证书或者不是全球可信的SSL证书才会要求下载一个客户端证书。还有一种情况,你必须要有一个个人证书,类似网银的那种uk,里面会有一个证书,这样才可以访问的,但是像那种普通的登录页面或是支付交易页面都是只启用ssl就可以了,不需要客户端证书验证。
更多相关SSL验证,客户端正等问题建议你去沃通CA的SSL证书,客户端证书论坛去看看。
SSL证书签发
参考技术AHTTPS = HTTP + TLS/SSL
SSL:Secure Sockers Layer,安全套接层
TLS:标准化之后的SSL
提供隐私和数据两个通信实体之前的完整性
由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)
SSL的核心在于提供安全可信的通讯
实际应用中,通常有单向认证和双向认证两种实现方式
1 客户端:发送客户端SSL版本信息等
2 服务端:返回SSL版本信息等及服务器公钥
3 客户端:校验证书是否合法
验证证书是否过期、CA是否可靠等
4 客户端:发送对称加密方案给服务端
5 服务端:选择加密方式
6 服务端:将加密方案 明文 发送给客户端
7 客户端:产生随机码,生成对称加密密钥,使用服务端公钥加密,发送服务端
8 服务端:使用私钥解密,获得对称加密密钥
9 握手结束,对称加密,安全通信
1 客户端:发送客户端SSL版本信息等
2 服务端:返回SSL版本信息等及服务器公钥
3 客户端:校验证书是否合法
4 客户端: 将自己的证书和公钥发送至服务端
5 服务端: 校验客户端证书,获得客户端公钥
6 客户端:发送对接加密方案给服务端
7 服务端:选择加密方式
8 服务端:将加密方案 使用客户端公钥加密后 发送给客户端
9 客户端:使用私钥解密,获得加密方式,产生随机码,生成对称加密密钥,使用服务端公钥加密后,发送给服务端
10 服务端:使用私钥解密,获得对称加密密钥
11 握手结束,对称加密,安全通信
SSL核心的概念:ca、私钥、公钥、证书
私钥默认格式为pkcs1,一个简化的私钥生成命令:
openssl genrsa -out private.pem 3072
java对私钥格式有 要求 ,需要转换为pkcs8格式,转换命令:
openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM -nocrypt -out private-pkcs8.pem
认证中心,第三方认证提供方,为证书提供可靠性认证
开发过程中一般使用自签发证书进行测试,再使用正式签发的证书
CA在使用时,主要是使用ca证书,ca证书由ca key签发而来
要素: CA私钥、CA CSR、签发证书
中间根据提示输入 Country Name 、 State or Province Name 等等
组成:CA根证书、签发客户端证书
使用 OpenSSL 创建客户端证书时,请注意
创建私钥时,请将长度指定为 4096
创建证书时,对于 -extensions 参数,指定 usr_cert
生成私钥
openssl genrsa -out product.key 3072
生成证书签发请求
openssl req -new -key product.key -out product.csr
将证书签发请求发送至CA,签发证书,这一步一般无法感知,大概的意思就是执行下面的签发命令
openssl ca -in product.csr -out product.crt -days 365
上面这一条还是隐藏了很多细节,再看下面的
签名过程需要 CA 的证书和私钥参与,最终颁发一个带有 CA 签名的证书
openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in product.csr -out product.crt
这个 product.crt 就是正式可以使用的证书了
TLS单向认证和双向认证的区别
以上是关于求助delphi实现ssl验证客户端证书的主要内容,如果未能解决你的问题,请参考以下文章