はじめに
前回は、opensslコマンドを使ってApacheでHTTPSサーバの構築を行いました。今回は秘密鍵、および対になるサーバ証明書の共有鍵の内容を確認します。
内容確認
秘密鍵はpem形式というフォーマットで保存されているため、cat等でtext表示をしても内容が分かりません。
# cat server.key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAxP9lDdZ1WtLPYYhcFeSYXax/i/zlonc3E9IwdH0BvMt5gyQW
UcU/oAk2ZjmFjtnFKus0TyO6hCEdF+t2UC8v6cCEk/La2d3zrYPQ1u0Q4+EEwrGN
(中略)
01ac2navtVrdgCik2YzIIhh1fY9C14Smeb0JNxCl06EuT7v7IlNtFuoee8DpgbM4
dGDDdUqgaeuLKI7/nBOJF82XQw1MIk6TY0VO+u9ft58kKeD3w1oj5g==
-----END RSA PRIVATE KEY-----
pem形式からデータを取り出すには、openssl rsaコマンドに-textのオプションをつけて実行します。
# openssl rsa -text < server.key
Private-Key: (2048 bit)
modulus:
00:c4:ff:65:0d:d6:75:5a:d2:cf:61:88:5c:15:e4:
98:5d:ac:7f:8b:fc:e5:a2:77:37:13:d2:30:74:7d:
(略)
prime1:
00:ec:fc:8f:00:58:75:df:8e:91:fa:cb:5e:19:da:
94:d8:18:2b:0d:14:c2:ae:57:a6:98:35:ec:be:8d:
(略)
prime2:
00:d4:cd:82:0b:a6:d8:ed:27:49:b0:e1:da:de:83:
c7:46:8c:a6:9b:4e:0d:1a:73:c3:a8:14:19:69:11:
(略)
コマンドを実行するといくつかのパラメータが出てきますが、modulusとprimeに注目します。modulusは2つの素数の積となる値で、これが公開鍵そのものになります。prime1とprime2が素となる素数であり、秘密鍵になります。
対になるサーバ証明書も確認してみましょう! こちらはx509コマンドに-textオプションをつけることで、同じように確認できます。
# openssl x509 -text < server.crt
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
d4:fb:52:22:40:ea:03:6b
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=XX, L=Default City, O=Default Company Ltd
Validity
Not Before: Jan 14 14:05:10 2018 GMT
Not After : Feb 13 14:05:10 2018 GMT
Subject: C=XX, L=Default City, O=Default Company Ltd
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c4:ff:65:0d:d6:75:5a:d2:cf:61:88:5c:15:e4:
98:5d:ac:7f:8b:fc:e5:a2:77:37:13:d2:30:74:7d:
(略)
こちらからもmodulusの値が出てきました。秘密鍵のmodulusと一致しているため、先ほどの秘密鍵と対になる公開鍵が含まれていることがわかります。