ファイナンス、情報通信技術のスキル・アグリゲーション・サイト

' . iseeit.jp 情報通信技術 . '

プライベート認証局でプライベート SSL/TLS 証明書を発行する

認証局(Certification Authority:CA)は、電子証明書の発行と失効がおもな役割です。認証局には、パブリック認証局プライベート認証局の2つの形態があります。

パブリック認証局は、商用 CA 信頼された認証局信頼された証明機関のようにも呼ばれています。パブリック認証局が発行する電子証明書のルート証明書は、主要なウェブブラウザなどにあらかじめ組み込まれていて、その配布やインストールが不要な場合がほとんどです。パブリック認証局が電子証明書の発行する際には、申請者の実在確認を行っています。

プライベート認証局は、自己認証局や独自認証局のようにも呼ばれています。限定した用途や範囲内で電子証明書を配布して使用する場合などに開設されています。また、プライベート認証局は、パブリック認証局から信頼を付与されて、電子証明書を発行している場合もあります。

SSL/TLS 証明書は、 SSL 証明書と呼ばれることがほとんどです。 SSL (Secumre Sockets Laye)は、インターネット上でデータを暗号化して送受信するトランスポート層のプロトコルです。 TLS (Transport Layer Security)は、SSL3.0 を元に TLS1.0 が RFC 2246 に定められた経緯があります。そして現在では、SSL3.0 の利用は非推奨とされ、TLS 1.2 などのバージョンが利用されています。

プライベート SSL/TLS 証明書は、プライベート認証局が発行する電子証明書です。個人が認証局を開設して、個人が使用する範囲で暗号化を利用するなど、個人で発行することもできます。

OpenSSL を使用して、プライベート認証局を開設し、プライベート SSL/TLS 証明書を発行する手順をみていきます。

〖参考〗認証局なしで証明書を作成する例

参考として、プライベート認証局を開設せずに、プライベート SSL/TLS 証明書を作成するコマンド例を紹介します。-out server.crt は、出力するサーバ証明書のファイル名。-keyout server.key は、出力する秘密鍵のファイル名。-nodes は、秘密鍵にパスフレーズを設定しない指定。-days の «duration» には、証明書の有効期間の日数を設定します。



$ openssl req -newkey rsa:2048 -nodes -x509 -out server.crt -keyout server.key -days «duration»

コマンドを実行すると、Distinguished Name(ディスティングイッシュネーム情報)の入力が要求されます。



Generating a 2048 bit RSA private key
(省略)...........................+++
(省略)...........................+++
writing new private key to 'server.key'
-----
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]:
«Edogawa-ku など(市区町村名)»
Organization Name (eg, company) [Default Company Ltd]:
«PrivateServer など(組織名)»
Organizational Unit Name (eg, section) []:
«(内部組織を判別する任意の文字列:部門名)»
Common Name (eg, your name or your server's hostname) []:
«www.example.jp など(コモンネーム)»
Email Address []:
«(未入力)»

PEM (Privacy Enhanced Mail)は、証明書や秘密鍵などの保管に使用するファイルの形式です。エンコードに Base64 が使用されています。そして例えば、証明書は「-----BEGIN CERTIFICATE-----」から始まり「-----END CERTIFICATE-----」で終わるテキスト形式、パスフレーズのない秘密鍵は「-----BEGIN PRIVATE KEY-----」から始まり「-----END PRIVATE KEY-----」で終わるテキスト形式になっています。

Certificate Authority(CA:認証局)

認証局を開設して、Certificate Authority Certificate(認証局自身の証明書)と key(認証局の秘密鍵)を生成します。-days の «duration» には、有効期間の日数を設定します。-keyout の ca.key は、認証局の秘密鍵。-out の ca.crt は、認証局の証明書。なお、オペレーティング・システム(OS)やバージョンによって、SHA-1 がデフォルトのままとなっている場合は、-sha256 をつけます。



$ openssl req -new -x509 -days «duration» -extensions v3_ca -keyout ca.key -out ca.crt -sha256

pass phrase(パスフレーズ)と、Distinguished Name(ディスティングイッシュネーム情報)の入力が要求されます。



Generating a 2048 bit RSA private key
(省略)...........................+++
(省略)...........................+++
writing new private key to 'ca.key'
Enter PEM pass phrase: 
«(パスフレーズを設定します。)»
Verifying - Enter PEM pass phrase: 
«(設定したパスフレーズをもう一度入力します。)»
-----
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]:
«Edogawa-ku など(市区町村名)»
Organization Name (eg, company) [Default Company Ltd]:
«PrivateCA など(組織名)»
Organizational Unit Name (eg, section) []:
«(内部組織を判別する任意の文字列:部門名)»
Common Name (eg, your name or your server's hostname) []:
«ca.example.jp など(コモンネーム)»
Email Address []:
«(未入力)»

Server Certificate(サーバ証明書)

Server Key(サーバの秘密鍵)を生成します。秘密鍵には、通常、パスフレーズを設定します。



$ openssl genrsa -des3 -out server.key 2048

pass phrase(パスフレーズ)の入力が要求されます。



Generating RSA private key, 2048 bit long modulus
...............+++
...............+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
«(パスフレーズを設定します。)»
Verifying - Enter pass phrase for server.key:
«(設定したパスフレーズをもう一度入力します。)»

サーバソフトウェアのなかには、パスフレーズを設定しているとエラーになる場合があります。パスフレーズを設定しないで秘密鍵を生成する場合です。



$ openssl genrsa -out server.key 2048


Generating RSA private key, 2048 bit long modulus
(省略)...........................+++
(省略)...........................+++
e is 65537 (0x10001)

Certificate Signing Request(CSR:署名リクエスト)を作成します。



$ openssl req -out server.csr -key server.key -new

Distinguished Name(ディスティングイッシュネーム情報)の入力が要求されます。



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]:
«Edogawa-ku など(市区町村名)»
Organization Name (eg, company) [Default Company Ltd]:
«PrivateServer など(組織名)»
Organizational Unit Name (eg, section) []:
«(内部組織を判別する任意の文字列:部門名)»
Common Name (eg, your name or your server's hostname) []:
«www.example.jp など(コモンネーム)»
Email Address []:
«(未入力)»
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
«(未入力)»
An optional company name []:
«(未入力)»

Server Certificate(サーバ証明書)を作成します。-days の «duration» には、有効期間の日数を設定します。



$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days «duration»


Signature ok
subject=/C=JP/ST=Tokyo/L=Edogawa-ku/O=PrivateServer/CN=www.example.jp
Getting CA Private Key
Enter pass phrase for ca.key:
«(ca.key に設定したパスフレーズを入力します。)»

〖参考〗Client Certificate(クライアント証明書)

参考として、Client Certificate(クライアント証明書)の作成もみてみます。

Client Key(クライアントの秘密鍵)を生成します。秘密鍵には、通常、パスフレーズを設定します。



$ openssl genrsa -des3 -out client.key 2048

pass phrase(パスフレーズ)の入力が要求されます。



Generating RSA private key, 2048 bit long modulus
...............+++
...............+++
e is 65537 (0x10001)
Enter pass phrase for client.key:
«(パスフレーズを設定します。)»
Verifying - Enter pass phrase for client.key:
«(設定したパスフレーズをもう一度入力します。)»

パスフレーズを設定しないで秘密鍵を生成する場合です。



$ openssl genrsa -out client.key 2048


Generating RSA private key, 2048 bit long modulus
(省略)...........................+++
(省略)...........................+++
e is 65537 (0x10001)

Certificate Signing Request(CSR:署名リクエスト)を作成します。



$ openssl req -out client.csr -key client.key -new

Distinguished Name(ディスティングイッシュネーム情報)の入力が要求されます。



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]:
«Edogawa-ku など(市区町村名)»
Organization Name (eg, company) [Default Company Ltd]:
«PrivateClient など(組織名)»
Organizational Unit Name (eg, section) []:
«(内部組織を判別する任意の文字列:部門名)»
Common Name (eg, your name or your server's hostname) []:
«client.example.jp など(コモンネーム)»
Email Address []:
«(未入力)»
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
«(未入力)»
An optional company name []:
«(未入力)»

Client Certificate(クライアント証明書)を作成します。-days の «duration» には、有効期間の日数を設定します。



$ openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days «duration»


Signature ok
subject=/C=JP/ST=Tokyo/L=Edogawa-ku/O=PrivateClient/CN=client.example.jp
Getting CA Private Key
Enter pass phrase for ca.key:
«(ca.key に設定したパスフレーズを入力します。)»

ファイナンシャル・プランニング
6つの係数

終価係数 : 元本を一定期間一定利率で複利運用したとき、将来いくら になるかを計算するときに利用します。

現価係数 : 将来の一定期間後に目標のお金を得るために、現在いくら の元本で複利運用を開始すればよいかを計算するときに利用します。

年金終価係数 : 一定期間一定利率で毎年一定金額を複利運用で 積み立て たとき、将来いくら になるかを計算するときに利用します。

年金現価係数 : 元本を一定利率で複利運用しながら、毎年一定金額を一定期間 取り崩し ていくとき、現在いくら の元本で複利運用を開始すればよいかを計算するときに利用します。

減債基金係数 : 将来の一定期間後に目標のお金を得るために、一定利率で一定金額を複利運用で 積み立て るとき、毎年いくら ずつ積み立てればよいかを計算するときに利用します。

資本回収係数 : 元本を一定利率で複利運用しながら、毎年一定金額を一定期間 取り崩し ていくとき、毎年いくら ずつ受け取りができるかを計算するときに利用します。

積み立て&取り崩しモデルプラン

積立金額→年金額の計算 : 年金終価係数、終価係数、資本回収係数を利用して、複利運用で積み立てた資金から、将来取り崩すことのできる年金額を計算します。

年金額→積立金額の計算 : 年金現価係数、現価係数、減債基金係数を利用して、複利運用で将来の年金プランに必要な資金の積立金額を計算します。