1.建立CA证书
生成根证书和对应的私钥openssl req -new -x509 -days 3650 -keyout ca.pem -out ca.crt -config openssl.cnf
openssl req -newkey rsa:2048 -out newCSR.pem -keyout newKey.pem -config openssl.cnf
用根证书签发该服务证书
openssl ca -in newCSR.pem -out newCert.pem -config openssl.cnf
参考:
http://zhumeng8337797.blog.163.com/blog/static/100768914201241645258903/
2.生成服务器证书命令
以下是证书签发工具程序实际执行的命令.生成证书私钥
openssl genrsa -des3 -out .\\cert\\server\\iac_server_4642.key -passout pass:xxxxxx 1024
生成证书请求
openssl req -new -key .\\cert\\server\\iac_server_4642.key -subj "/C=CN/ST=GD/L=SZ/O=IAC/OU=IAC Operator/CN=IAC Server 4642" -out .\\cert\\server\\iac_server_4642.csr -passin pass:xxxxxx -config openssl.cnf
对证书签名
openssl ca -in .\\cert\\server\\iac_server_4642.csr -out .\\cert\\server\\iac_server_4642.crt -cert .\\ca\\iac.crt -keyfile .\\ca\\iac.key -key xxxxxx -batch -config openssl.cnf
合并crt和key文件生成服务器pem文件:iac_server_4642.pem
生成java的PKCS8EncodedKeySpec使用的证书(把pem的私钥导出成der文件):
openssl pkcs8 -topk8 -inform PEM -outform DER -in rsa_pem.key -out pkcs8_der.key -nocrypt
证书格式:
---pfx: 包含公钥和私钥的二进制格式 (PKCS#12)
---cer:二进制格式
---base64:cer
---der:二进制DER编码
---pem:ascii(base64)编码
3.证书签发工具程序及配置
工具程序admin_util用来为服务器签发证书,签发的公钥证书及服务器信息保存到数据库中(tb_0016).配置文件admin_util.ini文件格式如下:
[general]
;模式 1-gyb 2-只签发服务器证书
mode=2
;数据源名称
ds=cqq_retail
;数据库用户
user=root
;用户密码
password=xxx
openssl_bin_path=.
ca_cert_path=.\ca
;CA名称
ca_name=iac
;CA私钥密码
ca_key=xxxxxx
;证书文件目录
cert_path=.\cert
lcs_path=.\lcs
;下一个服务器ID
server_id=4651
batch_sign_out_path=.\out
batch_import_file_path=.\import_data
;证书私钥密码
key_pswd=xxxxxx
;证书前缀
cert_prefix=iac_
;主题模板
subject_template=/C=CN/ST=GD/L=SZ/O=IAC/OU=IAC Operator/CN=IAC Server
;说明文本(如描述服务器ID分配规则)
help=help.txt