java 生成truststore_keytool生成Nifi keystore,truststore以及TLS客户端证书指南

当我们要把Nifi设置成加密模式时,我们需要为其提供keystore和truststore。如果我们想通过TLS身份验证访问Nifi的UI时,我们还需要生成一个客户端的PKCS12文件来导入浏览器中。以下简单介绍怎么用Java自带的keytool来生成以上所提及的文件。

生成Keystore

以下命令生成一个包含自签证书(self-signed certificate)的Java keystore:

keytool -genkey -keyalg RSA -alias nifi -keystore keystore.jks -keypass [password] -storepass [password] -validity 365 -keysize 4096 -dname "CN=[hostname], OU=nifi"

其中,替换[password]为你想设置的密码,替换[hostname]为你运行Nifi的机器的hostname。

这样,我们就生成了keystore.jks文件。该文件需要放置到Nifi当中。

生成PKCS12文件以及对应的Truststore

PKCS12文件是一种加密文件,一般用于存放证书以及对应的私钥。由于使用keytool无法直接生成PKCS12文件,我们首先生成一个包含自签证书的keystore(与上文生成Keystore的命令很相似):

keytool -genkey -keyalg RSA -alias client -keystore client_keystore.jks -keypass password -storepass password -validity 365 -keysize 4096 -dname "CN=user, OU=nifi"

这里,我们只是随便设置了一个密码password,因为这个Keystore只是一个过渡的产物,我们最后不会用到,所以随便设置一个就好。

接着我们把这个keystore转化成PKCS12文件:

keytool -importkeystore -srckeystore client_keystore.jks -destkeystore client.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass password -deststorepass [client_password] -destkeypass [client_password] -srcalias client -destalias client

其中,替换[client_password]为你想为PKCS12文件设置的密码。

除了生成PKCS12文件外,我们还需要生成一个信任PKCS12密匙文件中的证书的truststore。为此,我们先从之前的keystore中输出密匙的证书:

keytool -export -keystore client_keystore.jks -alias client -file client.der -storepass password

当我们得到证书以后,我们把这个证书引入到truststore.jks当中:

keytool -import -file client.der -alias client -keystore truststore.jks -storepass [truststore_password] -noprompt

其中,替换[truststore_password]为你想为truststore设置的密码。

这样,我们就生成了一个要放到Nifi当中的truststore.jks文件,以及需要导入到浏览器中的client.p12文件。

最后,为了安全起见,你应该删除掉client_keystore.jks以及client.der两个文件。

导入PKCS12文件

想要通过TLS身份验证方式访问Nifi UI,你必须先把生成的PKCS12文件导入到浏览器中。以Chrome为例,先进入设置 => 高级,找到 证书管理一项:

393724f02dd5

证书管理(Manage certificates)

点开该栏,会弹出以下窗口:

393724f02dd5

导入证书

点击导入,按照向导指引,选择你的client.p12文件,并输入该文件的密码就可以完成导入。然后你就可以通过浏览器访问加密的Nifi界面了。当被要求选择证书时,选择你添加的那项就可以了(如下图):

393724f02dd5

选择证书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值