JMX监视SSL设置指南

帕特里克·罗素
2023-01-22还剩11分08秒

主题

如果您的JMX监视应用程序需要SSL,本指南将描述如何设置证书。

支持版本

Artifactory 6。X和7。X(7。使用X路径)

决议

在Artifactory服务器上,设置以下环境变量:

DNAME="cn=App, ou=Java, o=Zabbix, c=LV"
天= 3650
密码= changeit
CACERTS="/etc/ssl/certs/java/ CACERTS " #用于创建新的密钥库


首先,为应用程序(本例中为Apache Tomcat)创建密钥存储库和信任存储库。

使用除美元变量作为新的密钥存储库和信任存储库的基础。因此,所有公共ca和新证书都被使用。确保将变量设置为一个现有的cacerts文件,上面的路径就是一个例子。

使用以下命令生成新的密钥存储库:

#初始化密钥库
keytool -genkey -alias tomcat -keyalg RSA -validity ${DAYS} -keystore tomcat。keystore -storepass ${PASSWORD} -keypass ${PASSWORD} -dname "${DNAME}"

使用新的Tomcat密钥库更新信任库
cp ${CACERTS} tomcat.truststore

Keytool -storepasswd -keystore tomcat。truststore -storepass change -new ${PASSWORD}

keytool -genkey -alias tomcat -keyalg RSA -validity ${DAYS} -keystore tomcat。truststore -storepass ${PASSWORD} -keypass ${PASSWORD} -dname "${DNAME}"

在JMX客户机上,例如jconsole,执行相同的步骤来创建一个新的密钥存储库:

DNAME="cn=App, ou=Java, o=Zabbix, c=LV"
天= 3650
密码= changeit
除= " / etc / ssl /证书/ java / CACERTS”
keytool -genkey -alias jconsole -keyalg RSA -validity ${DAYS} -keystore jconsole。keystore -storepass ${PASSWORD} -keypass ${PASSWORD} -dname "${DNAME}"

cp ${CACERTS} jconsole.truststore

Keytool -storepasswd -keystore jconsole。truststore -storepass change -new ${PASSWORD}

keytool -genkey -alias jconsole -keyalg RSA -validity ${DAYS} -keystore jconsole。truststore -storepass ${PASSWORD} -keypass ${PASSWORD} -dname "${DNAME}"

然后,从密钥库中导出公共证书:

Keytool -export -alias tomcat -keystore tomcat。Keystore -file tomcat。${密码}

Keytool -export -alias jconsole -keystore jconsole。Keystore -文件jconsole。${密码}

最后,将证书导入彼此的信任存储库。这允许应用程序(Tomcat)信任客户端(JConsole),反之亦然:

Keytool -import -alias jconsole -file jconsole。Cer -keystore tomcat。truststore -storepass ${PASSWORD} -noprompt

Keytool -import -alias tomcat -file tomcat。Cer -keystore jconsole。truststore -storepass ${PASSWORD} -noprompt

#清除所有剩余的CER证书文件
Rm -f *.cer

在Artifactory实例中,将JMX Remote属性添加到Artifactory .system.properties文件中:

vim /var/opt/jfrog/artifactory / etc / artifactory / artifactory.system.properties

com.sun.management.jmxremote = true
com.sun.management.jmxremote.port = 9010
com.sun.management.jmxremote.authenticate = true
com.sun.management.jmxremote.password.file = / etc / opt / jmxremote.password
com.sun.management.jmxremote.access.file = / etc / opt / jmxremote.access
com.sun.management.jmxremote.ssl = false
javax.net.ssl.keyStore = / etc / opt / tomcat.keystore
javax.net.ssl.keyStorePassword = changeit
javax.net.ssl.trustStore = / etc / opt / tomcat.truststore
javax.net.ssl.trustStorePassword = changeit
com.sun.management.jmxremote.ssl.need.client.auth = true

#重启应用程序
$ systemctl restart artifactory


在Zabbix Java Gateway上(具体步骤取决于JMX监控应用程序):

$ vim /usr/sbin/zabbix_java_gateway

ZABBIX_OPTIONS = " $ ZABBIX_OPTIONS -Dsun.rmi.transport.tcp。responseTimeout=$tcp_timeout -Djavax.net.ssl.keyStore=/etc/opt/jconsole.keystore -Djavax.net.ssl.keyStorePassword=changeit -Djavax.net.ssl.trustStore=/etc/opt/jconsole.truststore -Djavax.net.ssl.trustStorePassword=changeit"

$ systemctl restart zabbix-java-gateway #在UI中验证是否工作