一般Linux都自带安装了OpenSSL:
1 2 3 4
| $ openssl OpenSSL> version OpenSSL 1.0.2k-fips 26 Jan 2017 OpenSSL> exit
|
基本概念
- CA:认证机构。有自己的证书,可以拿自己的证书给别人签名然后收钱,这个星球上的CA被几家说英语的人垄断了。在这里我们会虚拟出一个CA机构,然后用他来给自己的证书认证签名。
- (网站)证书 :发送给客户端的证书,其中大部分是公钥。是一个包含自己网站的公钥、认证、签名等信息的文件。
- (网站)私钥 :服务器留存的解密私钥(server)
*注意区分 CA机构的证书(可以拿来给其他网站证书签名)和 自己网站的证书(不可以),不一样*
基本流程
- 搞一个虚拟的CA机构,生成一个证书
- 生成一个自己的密钥,然后填写证书认证申请,拿给上面的CA机构去签名
- 于是就得到了(自建CA机构认证的)签名证书
首先,虚构一个CA认证机构出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
$ openssl genrsa -aes256 -out ca.key 2048
$ openssl rsa -in ca.key -out ca.key
$ openssl req -new -x509 -key ca.key -out ca.crt -days 365
|
其次,才是生成网站的证书
用上面那个虚构出来的CA机构来认证,不收钱!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
$ openssl genrsa -aes256 -out server.key 2048
$ openssl rsa -in server.key -out server.key
$ openssl req -new -key server.key -out server.csr
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -days 365 -out server.crt
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -out server.crt
|
至此,私钥server.key
和证书server.crt
已全部生成完毕,可以放到网站源代码中去用了。
导出p12格式根证书
1 2 3 4
|
$ openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
|
导出jks格式根证书
JKS
证书是Java常用的证书:
在JDK bin目录下有个证书工具 keytool
p12转jks
1 2 3
|
$ keytool -importkeystore -srckeystore server.p12 -srcstoretype pkcs12 -deststoretype JKS -destkeystore server.jks
|
crt转pfx在转jks
1 2 3 4 5 6 7 8 9 10 11
|
$ openssl pkcs12 -export -inkey server.key -in server.crt -out server.pfx
$ keytool -importkeystore -srckeystore server.pfx -srcstoretype pkcs12 -deststoretype jks -destkeystore server.jks
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
$ keytool -genkeypair -alias serverkey -keypass 123456 -storepass 123456 \ -dname "C=CN,ST=JS,L=SZ,O=buubiu,OU=dev,CN=bu" \ -keyalg RSA -keysize 2048 -validity 365 -keystore server.jks
$ keytool -certreq -alias serverkey -keyalg RSA -keystore server.jks -file server.csr
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -days 365
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
$ keytool -importcert -alias serverkey -file server.crt -keystore server.jks
|
生成的jks转p12
1 2 3 4 5 6
| $ keytool -importkeystore -srckeystore server.jks -destkeystore server.p12 \ -srcalias serverkey -destalias serverkey \ -srcstoretype jks -deststoretype pkcs12 \ -srcstorepass 123456 -deststorepass 123456 \ -noprompt 正在将密钥库 server.jks 导入到 server.p12...
|