目次


Windows 環境で OpenSSL と KYRTool を利用して自己署名証明書を作成する

OpenSSL と KYRTool で簡単にキーリングファイルを作成する

Comments

この文書では、IBM Domino サーバーを SSL 化するのに必要なキーリングファイル keyring.kyr を openssl コマンドと kyrtool コマンドを使って作成する方法を記載します。証明書は、自己署名を利用する手順としています。

※注意事項 : 当資料は日本アイ・ビー・エム株式会社の正式なレビューを受けておりません。当資料は正式なマニュアルをはじめとするドキュメントの補完資料として参照してください。

2017年8月23日 追記
Chrome 58 から、この手順で作成した証明書を使ったサイトにアクセスすると、ERR_CERT_COMMON_NAME_INVALID (missing_subjectAltName) の警告が表示されるようになりました。これは Web ブラウザ側のセキュリティ強化によるもので、Chrome 58 以降では SSL 証明書のドメイン名の一致には Common Name (CN) ではなく X509 v3で拡張された Subject Alternative Name (subjectAltName / SAN) が利用されるようになっています。サンプルとして提供している openssl.cnf には Subject Alternative Name が組み込まれていないため、警告が発生します。以下の手順で対処してください。

  1. openssl.cnf 内にある [ v3_ca ] セクション内に、subjectAltName を追加します。
    [ v3_ca ] 
    basicConstraints = CA:TRUE
    subjectAltName = DNS:www.example.com
  2. 手順 「4. 自己署名証明書の作成」で以下のようにします。
    c:\Tool\openssl>openssl x509 -req -days 3650 -sha256 -in server.csr -extfile openssl.cnf -extensions v3_ca -signkey server.key -out server.pem

1. OpenSSL と KYRTool の導入

まず、OpenSSL と KYRTool を Windows 環境に導入します。

1a. KYRTool

kyrtool.exe を導入します。以下の URL から 901FP3IF_keytool.zip をダウンロードし、解凍します。

IBM Support: Fix Central: IBM Domino: KYRTool_9x_ClientServer

解凍後、kyrtool\w32 フォルダにある kyrtool.exe を Notes クライアントのプログラムディレクトリにコピーします。

以下のサンプルでは、C:\Notes に IBM Notes クライアントを導入しています。

1b. OpenSSL

openssl コマンドが実行できる環境を用意します。Linux 環境や Windows 環境などで OpenSSL を導入することができますが、この文書では Windows 環境に OpneSSL を導入した環境としています。

Windows 環境に OpenSSL を導入する方法は、各種マニュアルを参照してください。Windows 用のバイナリモジュールは、以下のサイトからダウンロード可能です。

https://indy.fulgan.com/SSL/

この環境では、openssl-1.0.2e-i386-win32.zip をダウンロードし、C:\Tool\openssl に導入しています。

また、環境変数 Path と OPENSSL_CONF をそれぞれ以下のように設定しています。

set path=%PATH%;C:\Tool\openssl;
set OPENSSL_CONF=C:\Tool\openssl\openssl.cnf

openssl.cnf ファイルのサンプルは、本稿の巻末にあるダウンロード用リンクからダウンロードできます。

2. RSA キーペアの作成

RSA キーペアを作成します。

c:\Tool\openssl>openssl genrsa -out server.key 4096
Generating RSA private key, 4096 bit long modulus
...................................++
.........................................................++
e is 65537 (0x10001)

この手順で作成した秘密鍵 (server.key) はパスワードによって保護されていません。セキュリティの観点からは好ましくないため、これらの手順はアクセスが制限された環境で実施するようにしてください。

生成された server.key ファイルの中身は以下のような出力であることが確認できます。

c:\Tool\openssl>type server.key
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAspWkHdaxJb9bWhUo9hVn1Agzccu1JWZukVFcTuIXiEco4b/6
6n041tDVwWZ3pHrLeVof0JsXH0DznvgWfVPBgIgmCd5m1ikE6YfudQc0WwoykqJb
fUmgayiPRkYiwIqGeM7/YUmoqw106Nw0/3PxCjT4VraGRz1CNnTeJwcE0QZDpwUf
3xEjMWUACPKwN8tQnE8rKzWkxSJWJXGjGdyTgTiGjpDA4ueOrX2nhrdYyAlxtl/K
bOXx1sCDw96YffP3IlSznKdKAxjSA5i8EucVmklY/5s2VZKYdM5FRmh1OznQ5doe
///省略///
97dKeAXnM3yTmOoDOD1RONdYENvJ+eCS8xgCC7lENa+xmmIblNTNHp9jUH3TlMRM
P/LHOKbMGv5cnsffMixPsxjL1ASLO5Z9KMvizFyv3F8uvK9Ea0rxzq0/mFOc8aPp
t1phK7/swb3hj9ZxGZGUFgZw686EiNSSp9rXgnXHj0AjnX6phAnBwe6Rq4cN
-----END RSA PRIVATE KEY-----

3. 証明書署名要求の作成

証明書署名要求 (Certificate Signing Request / CSR) を作成します。

このステップでは証明書に指定する複数の情報を入力します。サンプルでは、いくつかの値を空白としているので注意してください。

コマンドサンプルの "-sha256" を指定しない場合は、デフォルト値である SHA-1 が利用されます。Domino 8.5.x 環境では SHA-2 が利用できないため、"-sha256" オプションは外してください。

c:\Tool\openssl>openssl req -new -sha256 -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:.
Organization Name (eg, company) [Default Company Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:www.example.com
Email Address []:

生成された server.csr ファイルを確認します。

c:\Tool\openssl>type server.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIEfDCCAmQCAQAwNzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMRgwFgYD
VQQDEw93d3cuZXhhbXBsZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCylaQd1rElv1taFSj2FWfUCDNxy7UlZm6RUVxO4heIRyjhv/rqfTjW0NXB
///省略///
C+t4M3sPeJMbQoHvD5bbCRNCNokbbkkQBe5SBvLxiwGQl1j6/dH+si1TrUrzJNpL
yYNgozkdjxMl4c0wxWrvGIQ/yMUm1U30lmHVm4PH0hHzNieJuP1qet6ebRzXCwZw
hgdM02DQotMfrUf3dM5QoS6iLP1ZiRRTsnpdThjcC/6SMNXkx8glzo2CQyfyht2j
FiKNgdvOJpsfiKXGvyyitxa+r/Zs08Eouo3Sz6g+kgBi9mU0xnzavm3Qc5O/EU3t
-----END CERTIFICATE REQUEST-----

4. 自己署名証明書の作成

自己署名証明書を作成します。

コマンドサンプルの "-sha256" を指定しない場合は、デフォルト値である sha1WithRSAEncryption が利用されます。Domino 8.5.x 環境では SHA-2 が利用できないため、"-sha256" オプションは外してください。

c:\Tool\openssl>openssl x509 -req -days 3650 -sha256 -in server.csr -signkey server.key -out server.pem
Signature ok
subject=/C=JP/ST=Tokyo/CN=www.example.com
Getting Private key

生成された server.pem ファイルを確認します。

c:\Tool\openssl>type server.pem
-----BEGIN CERTIFICATE-----
MIIE6jCCAtICCQCafyLS9u/Q/TANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJK
UDEOMAwGA1UECBMFVG9reW8xGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbTAeFw0x
NTEyMjgwOTI4MTBaFw0yNTEyMjUwOTI4MTBaMDcxCzAJBgNVBAYTAkpQMQ4wDAYD
///省略///
HcmlKb5U208GbrkLM2bw936W/FpZSaWmFVDP0c5SHoHxs1CHpGEgX/ynRwHuqVjn
mbBiH11Yfm7d1awxKNZoEoqHuV41uJxtj5itUKfmDHWD4ajNtRzbkBMli7arq72H
U/OjLYAzMOKyvG8eG55e6o4U1Br+FTZMxtFmxW3+bdx4c+oSECnxpXu32rzBVCmS
mJkextUQ7mgJonfoMPM=
-----END CERTIFICATE-----

5. キーリングファイルの作成

KYRTool を使って新しいキーリングファイルを作成します。-p の後の文字列 "password" は keyring.kyr に対するパスワードになります。

c:\Notes>kyrtool =C:\Notes\notes.ini create -k c:\Notes\data\keyring.kyr -p password

Keyfile c:\Notes\data\keyring.kyr created successfully

生成されたファイル (keyring.kyrkeyring.sth) を確認します。

c:\Notes\data>dir keyring*
 ドライブ C のボリューム ラベルは C_Drive です
 ボリューム シリアル番号は 306D-00D5 です

 c:\Notes\data のディレクトリ

2015/12/28  17:36            29,161 keyring.kyr
2015/12/28  17:36               129 keyring.sth
               2 個のファイル              29,290 バイト
               0 個のディレクトリ  388,781,764,508 バイトの空き領域

6. 各種データのマージ

以下の手順で、RSA キーペアと自己署名証明書を新しく作成したキーリングファイルにマージします。

6a. server.keyserver.pem の結合

最初に server.keyserver.pem ファイルを 1 つのファイルに結合します。

c:\Tool\openssl>type server.key server.pem > server.txt

server.key
server.pem

生成された server.txt を確認します。

c:\Tool\openssl>type server.txt
-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAspWkHdaxJb9bWhUo9hVn1Agzccu1JWZukVFcTuIXiEco4b/6
6n041tDVwWZ3pHrLeVof0JsXH0DznvgWfVPBgIgmCd5m1ikE6YfudQc0WwoykqJb
fUmgayiPRkYiwIqGeM7/YUmoqw106Nw0/3PxCjT4VraGRz1CNnTeJwcE0QZDpwUf
3xEjMWUACPKwN8tQnE8rKzWkxSJWJXGjGdyTgTiGjpDA4ueOrX2nhrdYyAlxtl/K
bOXx1sCDw96YffP3IlSznKdKAxjSA5i8EucVmklY/5s2VZKYdM5FRmh1OznQ5doe
///省略///
97dKeAXnM3yTmOoDOD1RONdYENvJ+eCS8xgCC7lENa+xmmIblNTNHp9jUH3TlMRM
P/LHOKbMGv5cnsffMixPsxjL1ASLO5Z9KMvizFyv3F8uvK9Ea0rxzq0/mFOc8aPp
t1phK7/swb3hj9ZxGZGUFgZw686EiNSSp9rXgnXHj0AjnX6phAnBwe6Rq4cN
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIE6jCCAtICCQCafyLS9u/Q/TANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJK
UDEOMAwGA1UECBMFVG9reW8xGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbTAeFw0x
NTEyMjgwOTI4MTBaFw0yNTEyMjUwOTI4MTBaMDcxCzAJBgNVBAYTAkpQMQ4wDAYD
///省略///
HcmlKb5U208GbrkLM2bw936W/FpZSaWmFVDP0c5SHoHxs1CHpGEgX/ynRwHuqVjn
mbBiH11Yfm7d1awxKNZoEoqHuV41uJxtj5itUKfmDHWD4ajNtRzbkBMli7arq72H
U/OjLYAzMOKyvG8eG55e6o4U1Br+FTZMxtFmxW3+bdx4c+oSECnxpXu32rzBVCmS
mJkextUQ7mgJonfoMPM=
-----END CERTIFICATE-----

6b. server.txt の確認

生成された server.txt を KYRTool を使ってチェックをします。

c:\Notes>kyrtool =C:\Notes\notes.ini verify c:\tool\openssl\server.txt


        KyrTool v1.1

Successfully read 4096 bit RSA private key
INFO: Successfully read 1 certificates
INFO: Private key matches leaf certificate
INFO: Final certificate in chain is self-signed

6C. 自己署名証明書のマージ

自己署名証明書を keyring.kyr にマージします。

c:\Notes>kyrtool =C:\Notes\notes.ini import all -k c:\Notes\data\keyring.kyr -i c:\tool\openssl\server.txt

Using keyring path 'c:\Notes\data\keyring.kyr'
Successfully read 4096 bit RSA private key
SECIssUpdateKeyringPrivateKey succeeded
SECIssUpdateKeyringLeafCert succeeded

7. キーリングファイルの状態確認

生成されたキーリングファイルの状態を show keys の引数を使って確認します。

c:\Notes>kyrtool =C:\Notes\notes.ini show keys -k c:\notes\data\keyring.kyr

Using keyring path 'c:\notes\data\keyring.kyr'

Key length: 4096 bits

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAspWkHdaxJb9bWhUo9hVn
1Agzccu1JWZukVFcTuIXiEco4b/66n041tDVwWZ3pHrLeVof0JsXH0DznvgWfVPB
///省略///
O0Yz3a1JBX1Vlg4Zzt4RWpuM1hrOtGSgn9LKToMJLUPZY/9POsuTIeQNLEKOmBkP
0TyUPz6Dm4Rleeidis4/RTMCAwEAAQ==
-----END PUBLIC KEY-----

Key length: 4096 bits

-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAspWkHdaxJb9bWhUo9hVn1Agzccu1JWZukVFcTuIXiEco4b/6
6n041tDVwWZ3pHrLeVof0JsXH0DznvgWfVPBgIgmCd5m1ikE6YfudQc0WwoykqJb
///省略///
P/LHOKbMGv5cnsffMixPsxjL1ASLO5Z9KMvizFyv3F8uvK9Ea0rxzq0/mFOc8aPp
t1phK7/swb3hj9ZxGZGUFgZw686EiNSSp9rXgnXHj0AjnX6phAnBwe6Rq4cN
-----END RSA PRIVATE KEY-----

次に、キーリングファイルの状態を show certs の引数を使って確認します。

c:\Notes>kyrtool =C:\Notes\notes.ini show certs -k c:\Notes\data\keyring.kyr

Using keyring path 'c:\Notes\data\keyring.kyr'


Certificate #0

Subject:        CN=www.example.com/ST=Tokyo/C=JP
Issuer:         CN=www.example.com/ST=Tokyo/C=JP
Not Before:     2015/12/28 18:28:10
Not After:      2025/12/25 18:28:10
Key length:     4096 bits
Fingerprint: whNh+2LHwskxtCoQIZbrF7qHrbfMtX4I0yd9AaGUdYY=
Signature Alg:  sha256WithRSAEncryption

-----BEGIN CERTIFICATE-----
MIIE6jCCAtICCQCafyLS9u/Q/TANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJK
UDEOMAwGA1UECBMFVG9reW8xGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbTAeFw0x
///省略///
U/OjLYAzMOKyvG8eG55e6o4U1Br+FTZMxtFmxW3+bdx4c+oSECnxpXu32rzBVCmS
mJkextUQ7mgJonfoMPM=
-----END CERTIFICATE-----

8. 動作確認

上記手順で生成されたキーリングファイル keyring.kyr と、対応する keyring.sth ファイルを IBM Domino サーバーのデータディレクトリにコピーし、動作を確認します。

必要に応じて、これらのファイルのバックアップを取得します。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=1025472
ArticleTitle=Windows 環境で OpenSSL と KYRTool を利用して自己署名証明書を作成する
publish-date=08232017