RHEL8 幫Nexus裝https(精簡整理)

RHEL8 幫Nexus裝https(精簡整理,crt與key轉jks)

ZONGRU Li
9 min readNov 25, 2022

簡單建立"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
太久可能要按一下enter
#可慮統一都從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"
得到self_signed_cert.crt與self_signed.key

轉換憑證參考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

接著就可以透過8443web頁面:

以上主要驗證可以正常使用crt與key轉換成jks給Nexus使用

假設是客戶有自己的AD憑證管理

前面步驟可能要改為先產出key與憑證請求檔,以下整理步驟

#首先撰寫設計檔:
sudo vi /opt/ssl_config

內容如下範例:

我用tmp目錄試試
#依據上述產出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
LINK

這時候-k就可以了:

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet