简短的说,nexus 开启https访问,大致分为两种方式:
-
第一种是用nginx做反向代理
对外暴露443端口,指定证书,对内转发到nexus上,如果你会用nginx,我这么一说你就懂了,不会用,我说的再多也白搭。
-
第二种将证书直接配置到nexus服务上
nexus自身指定的证书是jks格式,获取jks证书大致又可分为两种模式:
1 直接生成jks证书:
# 去你的nexus安装目录下:
cd $install-dir/etc/ssl/
# 生成证书
keytool -genkeypair -keystore keystore.jks -storepass nexus3 -keypass nexus3 -alias jetty -keyalg RSA -keysize 2048 -validity 5000 -dname "CN=*.{NEXUS_DOMAIN}, OU=Example, O=Sonatype, L=Unspecified, ST=Unspecified, C=US" -ext "SAN=DNS:{NEXUS_DOMAIN},IP:{NEXUS_IP}" -ext "BC=ca:true"
变量解释:
CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码
NEXUS_DOMAIN 是你的nexues 访问域名 这里不能输入IP 不然会报错
NEXUS_IP 是你的nexues 访问IP
storepass && keypass 对应了 ${jetty.etc}/jetty-https.xml
文件里的 KeyStorePassword
KeyManagerPassword
TrustStorePassword
的value值
2 将已有的x509 https证书 转成 jks证书:
openssl pkcs12 -export -out keystore.pkcs12 -inkey nexus.key -in nexus.crt
# 这里需要设置密码
# 再将p12格式文件转为.jks格式:
keytool -v -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS
# 输入上步设置的密码并设置新密码 可以和上一步一样的密码
这里最后的密码同样对应了 ${jetty.etc}/jetty-https.xml
文件里的 KeyStorePassword
KeyManagerPassword
TrustStorePassword
的value值
获得jks格式证书后,将其配置到nexus:
- 修改
$data-dir/etc/nexus.properties
文件,在第一行添加
application-port-ssl=8443
- 修改
$data-dir/etc/nexus.properties
文件,修改Key为nexus-args所在行的值,在后面添加:
,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-http-redirect-to-https.xml
- 修改${jetty.etc}/jetty-https.xml文件中keystore和truststore的配置部分
<Set name="KeyStorePath"><Property name="ssl.etc"/>/usr/program/nexus/nexus-3.19.0-01/etc/ssl/keystore.jks</Set>
<Set name="KeyStorePassword">nexus3</Set>
<Set name="KeyManagerPassword">nexus3</Set>
<Set name="TrustStorePath"><Property name="ssl.etc"/>/usr/program/nexus/nexus-3.19.0-01/etc/ssl/keystore.jks</Set>
<Set name="TrustStorePassword">nexus3</Set>
- 重启nexus,用刚才设置的ssl端口,访问验证
systemctl restart nexus.service
网友评论