安装certbot
sudo apt
-get install software
-properties-common
sudo add
-apt-repository ppa:certbot/certbot
sudo apt
-get update
sudo apt
-get install certbot
创建keys并获取证书
certbot certonly --standalone -d coderock
.cn -d www
.coderock.cn --email cwt8805@qq
.com
创建包含完整证书链和私钥的PKCS12文件
进入生成的证书目录(如/etc/letsencrypt/live/coderock.cn),然后执行如下命令
openssl pkcs12 -export -
in fullchain
.pem -inkey privkey
.pem -
out pkcs
.p12 -name NAME
上面的-name选项相当于jks里面的alias,可以随便命名,不过要保证跟下面的命令一致。 命令执行后会要求输入一个密码,类似于jks中的keystore password。
将PKCS12文件转化为Keystore文件
keytool
-importkeystore -deststorepass PASSWORD_STORE
-destkeypass PASSWORD_KEYPASS
-destkeystore keystore
.jks
-srckeystore pkcs
.p12
-srcstoretype PKCS12
-srcstorepass STORE_PASS
-alias NAME
上面的STORE_PASS和NAME跟上一步对应。PASSWORD_STORE和PASSWORD_KEYPASS是要生成的Keystore的keystore密码和key密码,可以随意给定。
在Netty中使用生成的Keystore
KeyStore ks = KeyStore
.getInstance(
"JKS")
ks
.load(new FileInputStream(
"/etc/letsencrypt/live/coderock.cn/keystore.jks"),
"password".toCharArray())
KeyManagerFactory kms = KeyManagerFactory
.getInstance(
"SunX509")
kms
.init(ks,
"password".toCharArray())
SslContext sslCtx = SslContextBuilder
.forServer(kms)
.clientAuth(ClientAuth
.NONE)
.build()