あるフリーランスエンジニアの色んなメモ!! ITスキル・ライフハックとか

NexusをHTTPS化する

概要

Nexusの機能を用いてHTTPS化するには、Nexusが参照しているJava KeyStoreファイルに、
署名された公開鍵・秘密鍵のペアが格納されている必要があるため、

  • Java KeyStoreファイル作成
  • 鍵ペア作成
  • 鍵ペアに自己署名

をkeytoolコマンドを用いて実施する。
keytoolコマンドはJDKに同梱されており、JDKインストールにより使用可能。


Nexusの停止

既存のJava KeyStoreファイルが存在する場合、
ファイルの更新が出来ないため、Nexusを停止する。

/opt/sonatype/nexus/bin/nexus stop

Java KeyStoreファイル・鍵ペアの作成

以下のコマンドで、Java KeyStoreファイル・鍵ペア作成を行う

keytool -genkeypair -keystore /opt/sonatype/nexus/etc/ssl/keystore.jks -alias nexus -keyalg RSA -sigalg SHA256withRSA -validity 365
キーストアのパスワードを入力してください:  任意
新規パスワードを再入力してください:  任意
姓名は何ですか。
  [Unknown]:  IPアドレス or ホスト名
組織単位名は何ですか。
  [Unknown]:  任意
組織名は何ですか。
  [Unknown]:  任意
都市名または地域名は何ですか。
  [Unknown]:  任意
都道府県名または州名は何ですか。
  [Unknown]:  任意
この単位に該当する2文字の国コードは何ですか。
  [Unknown]:  国コード
CN=IPアドレス or ホスト名, OU=任意, O=任意, L=任意, ST=任意, C=国コードでよろしいですか。
  [いいえ]:  はい

nexusの鍵パスワードを入力してください
        (キーストアのパスワードと同じ場合はRETURNを押してください):  任意

※「~でよろしいですか。」の問いには、全角文字で「はい」と入力する必要がある。
 「yes」と入力しても、先に進めない。


署名リクエスト(csr)の作成

以下のコマンドを実行し、署名リクエスト(.csrファイル)を作成する

keytool -certreq -alias nexus -keystore /opt/sonatype/nexus/etc/ssl/keystore.jks -file /opt/sonatype/nexus/etc/ssl/nexus.csr

証明書(pem形式)の作成

Nexusへアクセスするブラウザ等で、自己署名証明書(オレオレ証明書)を信頼する証明書として登録するために、pem形式の証明書を作成しておく。
上記で作成した署名リクエストを使用し、証明書(pem形式)を作成する

keytool -gencert -rfc -alias nexus -keystore /opt/sonatype/nexus/etc/ssl/keystore.jks -infile /opt/sonatype/nexus/etc/ssl/nexus.csr -outfile /opt/sonatype/nexus/etc/ssl/nexus.pem

Nexusの設定ファイルを修正

nexus.properties

httpsで使用するportの指定とjetty-https.xmlを読み込む設定を追加する

vi /opt/sonatype/nexus/etc/nexus-default.properties
application-port-ssl=8443
nexus-args=...省略...,${jetty.etc}/jetty-https.xml

jetty-https.xml

KeyStoreファイル・鍵ペア作成時に使用した各パスワードを設定する

vi /opt/sonatype/nexus/etc/jetty/jetty-https.xml
...省略...
    <Set name="KeyStorePath"><Property name="ssl.etc"/>/keystore.jks</Set>
    <Set name="KeyStorePassword">キーストアのパスワード</Set>
    <Set name="KeyManagerPassword">鍵パスワード</Set>
    <Set name="TrustStorePath"><Property name="ssl.etc"/>/keystore.jks</Set>
    <Set name="TrustStorePassword">キーストアのパスワード</Set>
...省略...

Nexusを起動

/opt/sonatype/nexus/bin/nexus start

httpsでNexusへアクセス

https://your host:8443

httpsでアクセス可能であることを確認する

comments powered by Disqus