独自の内部認証局
本項目では、独自の(テスト)認証局および証明書を作成するのに役立つ、内部認証局(CA)に関するスクリプトについて書かれています。
目次
- 独自の内部認証局
前提条件
docker-composeテンプレートをダウンロードします。[ダウンロード]
ここで、easyrsa3というヘルパーツールを使用します。このツールはopensslを使用します。そのため、Linuxベンダーのパッケージ版を使用していない場合は、opensslをインストールする必要があります。prepare-cust-ca.shヘルパースクリプトでは、docker-compose.ymlのYAMLファイルの一部を変更するために、yqという追加ツールが必要になります ダウンロードするバージョンは、できるだけ新しいものを使用してください。
Debian/Ubuntuでのインストール
sudo add-apt-repository ppa:rmescandon/yq
sudo apt-get update
sudo apt-get install easy-rsa yq
Fedora/Centos/RedHatでのインストール
sudo curl -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64
sudo chmod a+x /usr/local/bin/yq
sudo yum install epel-release
sudo yum makecache
sudo yum install easy-rsa
OpenSuse/SLESでのインストール
sudo curl -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/3.4.1/yq_linux_amd64
sudo chmod a+x /usr/local/bin/yq
sudo zypper refresh
sudo zypper install easy-rsa
Alpineでのインストール
MIRROR_URL=$(grep "main$" /etc/apk/repositories|sed -e 's#\(.*\/alpine\)/.*$#\1#')
echo "$MIRROR_URL/edge/community" >> /etc/apk/repositories
apk update
apk install easy-rsa yq
PKI(公開鍵基盤)の作成
カスタムの公開鍵基盤(PKI)を作成するには、新しい認証局を作成し、サーバー証明書を作成して、その作成した認証局でサーバー証明書に署名する必要があります。
プロセスを開始するディレクトリの作成
一つ目のステップは、PKIを作成することです。
警告:一連の作業は、必ず新規にディレクトリを作成の上、そのディレクトリ上で処理を行う必要があります。
make-cadir ca-dir
cd ca-dir
./easyrsa init-pki
varsファイルのカスタマイズ
以下のパラメータを変更します。
...
set_var EASYRSA_DN "org"
...
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "California"
set_var EASYRSA_REQ_CITY "Los Angeles"
set_var EASYRSA_REQ_ORG "Example Startup Company"
set_var EASYRSA_REQ_EMAIL "it@examplestartup.com"
set_var EASYRSA_REQ_OU "IT Sec group"
...
set_var EASYRSA_CA_EXPIRE 3650
...
set_var EASYRSA_CERT_EXPIRE 1080
...
set_var EASYRSA_NS_SUPPORT "yes"
...
set_var EASYRSA_NS_COMMENT ""
...
新しい認証局の作成
varsファイルを変更できれば、認証局のコモンネーム(Common Name;CN)が重要になります。
./easyrsa build-ca nopass
新しいサーバー証明書の作成
ここで、スクリプトからCNの情報を求められるため、注意してください。ワイルドカード(例:*.enamplestartup.com)の使用も許可されています。
./easyrsa gen-req server nopass
認証局でサーバー証明書に署名
./easyrsa sign-req server server
作成した証明書のコピー
以下の例のようにファイルをコピーして必要な権限を設定し、docker-compose.yamlと同じ階層にsslディレクトリを作成する必要があります。
mkdir -p ssl
cp ca-dir/pki/private/server.key ssl/private.key
cp ca-dir/pki/issued/server.crt ssl/certificate.crt
cat ca-dir/pki/ca.crt >> ssl/certificate.crt
chmod -R a+r ssl/
chmod a+w ssl/
.envとdocker-compose.ymlの準備
SSLで証明書を使用したい場合は、docker-compose.ymlだけではなく、.envも変更する必要があります。
docker-compose.ymlの変更
prepare-cust-ca.shシェルスクリプトを使用でき、docker-compose.ymlファイルを必要なオプションで拡張することができます。.envファイルの一部も同様に変更されます。
.envファイルの変更
必要に応じて、以下のようにファイルを編集して行を変更する必要があります。
...
# Public domain of the deployment
PUBLIC_DOMAIN=platform.examplestartup.com
# Public URL of the deployment that will be used for external access (Public domain + protocol + port)
PUBLIC_URL=https://platform.examplestartup.com
# Public URL of the SSO endpoint that will be used for external access. In most cases it should be the same as the PUBLIC_URL
SSO_PUBLIC_URL=https://platform.examplestartup.com
...
JHUB_CUSTOM_CA_CERTS=/full/path/to/platform/ssl/deb_cacerts/
警告: JHUB_CUSTOM_CA_CERTSには、プラットフォームのディレクトリと、ssl/deb_cacerts/サブディレクトリまでのフルパスが必要になります。
プラットフォームの起動
起動プロセスは、公式ドキュメントに記載されているものと同じです。
デプロイ後の手順やデプロイでのエラー
以前作成したサブディレクトリの削除
RapidMiner Initializationサービスの証明書の変換部分を再起動したい場合は、作成したサブディレクトリを削除する必要があります。
sudo rm -fr ssl/deb_cacerts/
sudo rm -fr ssl/java_cacerts/
sudo rm -fr ssl/rh_cacerts/