SSL/TSL

实现SSL通信:

    1:服务端需要 ①KeyStore(保存服务端私钥)②TrustKeyStore(保存客户端证书)

    2:客户端需要 ①KeyStore(保存客户端私钥)②TrustKeyStore(保存服务端证书)

SSL双向认证需要1+2,单向认证仅需1①+2②

单向认证:

 

双向认证:

 

 

自签证书:

keytool操作:

生成服务端私钥

keytool -genkey -alias sslserver -keystore sslserver.keystore

生成服务端证书

keytool -export -alias sslserver -keystore sslserver.keystore -file sslserver.cer

服务端证书导入客户端Trust KeyStore

keytool -import -alias sslserver -keystore sslclient.trust.keystore -file sslserver.cer

生成客户端私钥

keytool -genkey -alias sslclient -keystore sslclient.keystore

生成客户端证书

keytool -export -alias sslclient -keystore sslclient.keystore -file sslclient.cer

客户端证书导入服务端Trust KeyStore

keytool -import -alias sslclient -keystore sslserver.trust.keystore -file sslclient.cer

查看keystore信息

keytool -list -keystore xxx.keystore

查看keystore详细信息

keytool -list -v -keystore xxx.keystore

 

 

认证证书:

上述自签SSL证书无法用于H5客户端,访问时:服务端报“no cipher suites in common”,H5客户端报“ERR_SSL_VERSION_OR_CIPHER_MISMATCH”

需要认证机构签发的证书:

认证证书server.crt+server.key转keystore:

openssl pkcs12 -export -in server.crt -inkey server.key -passin pass:nettic -password pass:nettic -name hxsrv -out hxsrv.p12

此keystore仍然只能用于外网访问,内网访问时:服务端握手成功,H5客户端报“ERR_INSECURE_RESPONSE”

 

 

申请证书:

申请免费的Let's Encrypt证书

brew install certbot

sudo certbot certonly --standalone --email yanyiming@shhxzq.com -d shhxzq.com

失败:Incorrect validation certificate for tls-sni-01 challenge.

 

 

UPDATE:

非对称加密:

keytool -genkey -alias xsrv -dname "CN=shhxzq.com,OU=shhxzq.com,O=shhxzq.com,L=sh,ST=sh,C=cn" -keyalg EC -keysize 160 -validity 1825 -keypass nettic -storepass nettic -storetype PKCS12 -keystore xsrv.p12

对称加密:

keytool -genseckey -alias xsrv -dname "CN=shhxzq.com,OU=shhxzq.com,O=shhxzq.com,L=sh,ST=sh,C=cn" -keyalg AES -keysize 128 -validity 1825 -keypass nettic -storepass nettic -storetype JCEKS -keystore xsrv.jce

-genkey 表示创建密钥,对称加密创建密钥用-genseckey

-alias 密钥别名

-dname 表示密钥的Distinguished Names,表明密钥发行者的身份

CN=your name, OU=organizational unit, O=organization, L=city/locality, ST=state/province, C=country

-keyalg 使用的加密算法,默认DSA,非对称加密DSA(默认)/RSA/EC,对称加密DES/AES

-keysize 密钥长度,默认1024,DSA/RSA(1024),EC(160),AES(128)

-validity 该密钥的有效期,默认为90天

-keypass 生成密钥的密码

-storepass 访问密钥库的密码

-storetype 密钥保存格式,非对称加密PKCS12,对称加密JCEKS

JKS

.jks/.ks

【Java Keystore】密钥库的Java实现版本,provider为SUN

密钥库和私钥用不同的密码进行保护

JCEKS

.jce

【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE

相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES

PKCS12

.p12/.pfx

【PKCS #12】个人信息交换语法标准

1、包含私钥、公钥及其证书
2、密钥库和私钥用相同密码进行保护

BKS

.bks

【Bouncycastle Keystore】密钥库的BC实现版本,provider为BC

基于JCE实现

UBER

.ubr

【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,provider为BC

 

-keystore 密钥保存为文件名

 

 

转载于:https://my.oschina.net/u/3139896/blog/865740

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值