RHEL8 幫Nexus裝https(精簡整理)
簡單建立"RHEL-8.6.0_HVM-20220503-x86_64–2-Hourly2-GP2"機台
裝裝基本套件
#裝wget:
sudo yum install wget -y
#裝JDK8(可以透過sudo yum list|grep jdk查找):
sudo yum install java-1.8.0-openjdk.x86_64 -y
#到/opt底下下載nexus安裝包:
cd /opt
sudo wget https://download.sonatype.com/nexus/3/nexus-3.43.0-01-unix.tar.gz
#解壓縮:
sudo tar -zxf nexus-3.43.0-01-unix.tar.gz
#建立運行帳號nexus:
sudo adduser nexus
#改寫目錄權限:
sudo chown -R nexus:nexus nexus-3.43.0-01
sudo chown -R nexus:nexus sonatype-work
#改寫啟動帳號設定檔:
sudo vi /opt/nexus-3.43.0-01/bin/nexus.rc
改為:
#切到執行帳號,要先執行首次啟動
#才會在/opt/sonatype-work/nexus3/底下會有etc目錄可以有設定檔
sudo su - nexus
/opt/nexus-3.43.0-01/bin/nexus start
#先關閉沒關係,先來做設定:
/opt/nexus-3.43.0-01/bin/nexus stop
#可慮統一都從crt與key建立起,假設是自建:
#自建openssl的key與crt檔:
#先回到原帳號:
exit
cd /opt
sudo openssl req -x509 \
-nodes \
-days 3650 \
-newkey rsa:4096 \
-keyout self_signed.key \
-out self_signed_cert.crt \
-subj "/C=TW/L=Default City/O=pig/CN=13.114.16.117" \
-addext "subjectAltName = DNS:13.114.16.117"
轉換憑證參考LINK(crt與key轉jks)
#先轉換上述crt與key為pfx(我密碼一律都先用keypass):
sudo openssl pkcs12 -export -out server.pfx -inkey \
self_signed.key -in self_signed_cert.crt -password pass:keypass
#再從pfx轉jks(記得myalias,keypass密碼這些可以改):
sudo keytool -importkeystore -srckeystore server.pfx \
-srcstoretype pkcs12 -srcalias 1 -srcstorepass \
keypass -destkeystore keystore.jks -deststoretype jks \
-deststorepass keypass -destalias myalias
#切回執行帳號,創建/opt/sonatype-work/nexus3/etc/ssl目錄(預設沒有ssl那層):
sudo su - nexus
mkdir -p /opt/sonatype-work/nexus3/etc/ssl
#把剛剛做的keystore.jks丟到上面目錄內:
cp /opt/keystore.jks /opt/sonatype-work/nexus3/etc/ssl/
接著調整Nexus本身設定檔:
#調整/opt/sonatype-work/nexus3/etc/nexus.properties:
vi /opt/sonatype-work/nexus3/etc/nexus.properties
原本內容:
改為
#再來調整/opt/nexus-3.43.0-01/etc/jetty/jetty-https.xml:
vi /opt/nexus-3.43.0-01/etc/jetty/jetty-https.xml
#內容會有一行是
<New id="sslContextFactory" class..............的區塊,裡面會有三個值的設定
<Set name="KeyStorePassword">password</Set>
<Set name="KeyManagerPassword">password</Set>
<Set name="TrustStorePath">password</Set>
#將上述三個password改為上面建立keystore.jks使用的密碼例如keypass
<Set name="KeyStorePassword">keypass</Set>
<Set name="KeyManagerPassword">keypass</Set>
<Set name="TrustStorePath">keypass</Set>
以上基本設置應該就完成了
#用nexus身分啟動:
sudo su - nexus
/opt/nexus-3.43.0-01/bin/nexus start
接著就可以透過8443到web頁面:
以上主要驗證可以正常使用crt與key轉換成jks給Nexus使用
假設是客戶有自己的AD憑證管理
前面步驟可能要改為先產出key與憑證請求檔,以下整理步驟
#首先撰寫設計檔:
sudo vi /opt/ssl_config
內容如下範例:
#依據上述產出key檔:
cd /opt
sudo openssl genrsa -out self_signed.key 4096
#建立csr檔(因為非x509格式,x509才能指定失效日期多久,openssl req並沒有失效日期問題):
sudo openssl req -sha512 -new \
-key self_signed.key \
-out self_signed_csr.csr \
-config ssl_config
#確認CSR內有SAN屬性:
cd /opt
sudo openssl req -text -noout -verify -in self_signed_csr.csr
將上述CSR檔案交由AD核發憑證,取得憑證檔案crt(例如名稱為self_signed_cert.crt)
#確認AD核發的憑證,確認有 SAN 屬性:
cd /opt
sudo openssl x509 -noout -text -in self_signed_cert.crt
後面就照前面一樣,把key與crt一起轉換成pfx再轉Nexus實際需要的jks
範例跟上面一樣:
#先轉換上述crt與key為pfx(我密碼一律都先用keypass):
sudo openssl pkcs12 -export -out server.pfx -inkey \
self_signed.key -in self_signed_cert.crt -password pass:keypass
#再從pfx轉jks(記得myalias,keypass密碼這些可以改):
sudo keytool -importkeystore -srckeystore server.pfx \
-srcstoretype pkcs12 -srcalias 1 -srcstorepass \
keypass -destkeystore keystore.jks -deststoretype jks \
-deststorepass keypass -destalias myalias
有必要還要把AD本身根憑證及上面jks,crt放到機台上的
#放到機台本身的憑證信任區並更新(若別的CASE有pem檔也放進去):
sudo cp keystore.jks /etc/pki/ca-trust/source/anchors/
sudo cp self_signed_cert.crt /etc/pki/ca-trust/source/anchors/
sudo cp CAcert.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
這時候-k就可以了: