1. tmiki

    No comment

    tmiki
Changes in body
Source | HTML | Preview
@@ -1,43 +1,85 @@
-※個人的メモ
+# 概要
+## 前提条件
+- SSLサーバ証明書の発行にあたり、必要なコマンドをまとめます。
+- 要所で確認を行うためのコマンドをまとめます。
+- SSLサーバ証明書は外部のCA局へ発行してもらうこととします。自己署名証明書(≒オレオレ証明書)は発行しません。
+- 「SSLサーバ証明書」という語で、Internet上で公開するWebサーバにインストールするX.509準拠の証明書、を指すこととします。プロトコルとしてのSSLは既に利用されていませんが、慣習上からこう呼ぶことにします。
+- 「SSLサーバ証明書」を、単に「証明書」と記述することもあります。
+
+## 重要な知識
+- CSRは大きく二つの要素、「サーバの公開鍵」及び「サーバ運営者の情報」で構成されています。
+- SSLサーバ証明書とは、CSRに対してCA局の電子署名を付与したものとなります。
+- 原則、CA局の秘密鍵が分からない限り、SSLサーバ証明書の内容を改ざんすることは出来ません。
+- 鍵ペアという観点から見ると、秘密鍵は秘密鍵ファイルに、公開鍵はCSRファイル/証明書ファイルに記録されます。
+- ファイルに保存する際の形式・拡張子については下記記事がとても参考になります。この内容は必ず押さえておきましょう。
+- http://qiita.com/kunichiko/items/12cbccaadcbf41c72735
+
+## 想定するフロー
+下記のフローに準拠した形で、OpenSSLの各コマンドを記述します。
+
+1. 鍵ペアとCSR(Certificate Signing Request)を作成します。
+2. CSRの内容を確認します。
+3. 鍵の対称性を確認します。
+4. 秘密鍵が破損していないことを確認します。
+5. CA局に発行してもらったSSLサーバ証明書の内容を確認します。
-# CSR・秘密鍵新規作成
+
+# OpenSSLコマンド
+## CSR・秘密鍵新規作成
```
$ openssl req -newkey rsa:2048 -keyout encrypted_privkey.pem -rand file:/dev/urandom
```
+秘密鍵を併せて新規に作成し、「encrypted_privkey.pem」として保存します。
+ランダムシードとして、「/dev/urandom」を利用します。
+作成されたCSRは、標準出力に出力されます。
-# CSR内容確認
+## CSR内容確認
```
$ openssl req -in csr_filename.pem -text -noout
```
+作成したCSRが正しいかどうかを確認します。通常は下記の項目を確認します。
+これは、Webサーバにアクセスしてきたクライアントにて、当該サーバ証明書が妥当なものかどうかをチェックする情報となります。
+具体的には、アクセス先のドメイン名とSSLサーバ証明書のドメイン名が一致しているかを確認するための情報となります。
+- Subject: CN=example.com
+- X509v3 extensions: X509v3 Subject Alternative Name: DNS:example.com
-# 秘密鍵パスフレーズ解除
+## 秘密鍵パスフレーズ解除
```
$ openssl rsa -in encrypted_privatekey.pem > decrypted_privatekey.pem
```
+通常は、秘密鍵をWebサーバにインストールする場合、秘密鍵ファイルのパスフレーズは解除しておきます。
+パスフレーズが分からない場合、Webサーバは秘密鍵の内容を取得できないためです。
+
+## CSR/証明書と秘密鍵の対称性確認(Modulusの確認)
+公開鍵となるCSR/証明書と、秘密鍵が一致しているかどうかは、Modulusという値を確認することで判断することが出来ます。
+CSR/証明書と、秘密鍵のModulusが一致すれば、その両者はペアであるということが言えます。
-# CSRと秘密鍵の対称性確認
-※CSRのModulusを確認
+### CSRのModulusを確認
```
$ openssl req -in csr_filename.pem -modulus -noout
```
-
-秘密鍵のModulusを確認
+
+### SSLサーバ証明書のModulusを確認
+```
+$ openssl x509 -in cert_filename.pem -modulus -noout
+```
+
+### 秘密鍵のModulusを確認
```
$ openssl req -in decrypted_privatekey.pem -modulus -noout
```
-両者のModulusが一致することを確認する
-# 秘密鍵が破損していないことの確認
+## 秘密鍵が破損していないことの確認
```
$ openssl rsa -in decrypted_privatekey.pem -check -noout
```
-# SSL証明書内容確認
+## SSL証明書内容確認
```
$ openssl x509 -in cert_filename.pem -text -noout
```