Thrift使用SSL通讯时,秘钥生成方式

文件格式说明

*.crt、*.cer  证书文件(Certificate)  *.crt是Linux系统文件  cer是windows文件
*.key 私钥文件(Private Key)
*.csr  证书签名请求(Certificate signing request) 
*.pem、*.der 证书编码方式  pem   base64编码  der二进制编码(cer,key,csr 均可用这两种编码方式)
*.crl  证书吊销列表(Certificate Revocation List)
*.jks 是JAVA的keytools证书工具支持的证书私钥格式,javakeystone 里面存放着key和信任的CA,key和CA可以有多个
x509  一种通用的证书格式,包含证书持有人的公钥、加密算法等
pkcs1 ~ pksc12 公钥加密的一种标准,一般格式为 *.pN ,*.p12是包含证书和密钥的封装格式

生成truststore和和keystore文件

生成证书库(包含私钥)有效期365*50=18250天
keytool -genkey -alias thrift -keyalg RSA -keystore keystore -keysize 1024 -validity 18250
导出凭证文件
keytool -export -alias thrift -keystore keystore -file truststore.cer
把认凭证件导入到truststore文件
keytool -import -alias thrift -file truststore.cer -keystore truststore

生成服务端证书以及私钥

create self-signed server key and certificate
生成自签名证书和私钥文件
openssl req -new -x509 -nodes  -days 3000 -out server.crt -keyout server.key
-new    :说明生成证书请求文件
-x509   :说明生成自签名证书
-nodes  :如果指定-newkey自动生成秘钥,那么-nodes选项说明生成的秘钥不需要加密,即不需要输入passphase
-config :默认参数在ubuntu上为 /etc/ssl/openssl.cnf, 可以使用-config指定特殊路径的配置文件
-out    :-out 指定生成的证书请求或者自签名证书名称
-batch  :指定非交互模式,直接读取config文件配置参数,或者使用默认参数值 
-newkey :-newkey是与-key互斥的,-newkey是指在生成证书请求或者自签名证书的时候自动生成密钥,
              然后生成的密钥名称由-keyout参数指定。当指定newkey选项时,后面指定rsa:bits说明产生
              rsa密钥,位数由bits指定。 如果没有指定选项-key和-newkey,默认自动生成秘钥
-keyout :新创建的私钥文件

将证书以base64的编码方式导入到CA.pem中
openssl x509 -in server.crt -text > CA.pem
-in filename:指定要加密的文件存放路径

将自签名证书和私钥文件写入server.pem文件中
 cat server.crt server.key > server.pem

将自签名证书和私钥文件以pscs12的标准导入到server.p12文件
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12(导出密码为thrift)
-export :导出pkcs12 证书
-inkey : 私钥文件

生成客户端私钥和证书

create client key and certificate
以genrsa的方式生成客户端私钥(没有加密)
openssl genrsa -out client.key
genrsa : 生成私钥的标准

创建一个客户端证书签名请求
openssl req -new -key client.key -out client.csr

使用server.key(服务端私钥)签署客户端证书
openssl x509 -req -days 365 -in client.csr -CA CA.pem -CAkey server.key -set_serial 01 -out client.crt

CAkey : 设置CA私钥以签署证书。如果未指定此选项,则假定CA私钥存在于CA证书文件中
-CA filename——指定要用于签名的CA证书。当此选项存在时,x509的行为就像“迷你CA”。
该CA使用此选项对输入文件进行签名:将其颁发者名称设置为CA的主题名称,并使用CAs私钥进行数字签名。
此选项通常与-req选项组合。没有-req选项,输入是必须是自签名的证书。

-set_serial n——指定要使用的序列号。此选项可与-signkey或-CA选项一起使用。
如果与-CA选项结合使用,则不使用序列号文件(由-CAserial或-CAcreateserial选项指定)。
序列号可以是十进制或十六进制(如果前面是0x)。也可以指定负序列号,但不建议使用它们。

以PKSC12的格式导入证书(密码为 thrift)
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

以PEM格式导出证书以供OpenSSL使用 
openssl pkcs12 -in client.p12 -out client.pem -clcerts
-clcerts—— 只输出客户端证书(而不是CA证书)

将生成的证书以及公私钥信息导入到java需要的文件中

Java key And certificate import
将服务器证书导入到trustore文件中
keytool -importcert -storepass thrift -keystore .truststore -alias localhost --file server.crt

-storepass : 存储库口令

将服务器私钥以pkcs12的格式导入到keystore文件
keytool -importkeystore -storepass thrift -keystore .keystore -srcstoretype pkcs12 -srckeystore server.p12
-srcstoretype :源存储类型
-srckeystore : 源秘钥库

 

你可能感兴趣的:(java,thrift,rpc,thrift,ssl)