ubuntu-server-14-04:self-signed-certificate
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
ubuntu-server-14-04:self-signed-certificate [2015/01/07 19:50] – [環境] admin | ubuntu-server-14-04:self-signed-certificate [2019/08/23 13:33] (現在) – 削除 admin | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== 自己署名サーバ証明書の作成 ====== | ||
- | |||
- | 暗号化通信で何かと利用する、秘密鍵、公開鍵、証明書を作成する。 | ||
- | |||
- | |||
- | ===== 環境 ===== | ||
- | |||
- | |||
- | * Ubuntu 14.04.1 LTS 64bit | ||
- | |||
- | ^ パッケージ名 ^ バージョン ^ | ||
- | | openssl | 1.0.1f-1ubuntu2.7 | | ||
- | |||
- | |||
- | |||
- | ===== サーバの鍵を作成 ===== | ||
- | |||
- | きちんと信用されるCAに署名してもらうにしても、自己署名するにしても、とりあえずは署名してもらう鍵をつくらなければ。まぁ、無料でできる自己署名にするわけですが。 | ||
- | |||
- | 鍵長が 1024 bit では安全ではないといわれる昨今なので、2048 bit で。 | ||
- | |||
- | < | ||
- | $ openssl genrsa -des3 -out server.key.secure 2048 | ||
- | </ | ||
- | |||
- | パスワードを聞かれるので2回同じものを入力。 | ||
- | |||
- | 今作った鍵はパスワードで暗号化された鍵。サーバデーモンで使用する場合、毎回パスワードを入力して使用していては利便性に問題があるので、パスワードを解除した鍵を作成。 | ||
- | |||
- | < | ||
- | $ openssl rsa -in server.key.secure -out server.key | ||
- | </ | ||
- | |||
- | |||
- | ===== Certificate Signing Request を作成 ===== | ||
- | |||
- | |||
- | Certificate Signing Request (CSR) を作成する。 | ||
- | |||
- | < | ||
- | $ openssl req -new -key server.key -out server.csr | ||
- | </ | ||
- | |||
- | |||
- | いろいろ質問されるので答えておく。適当にエンターすると署名できない。' | ||
- | * Country Name (2 letter code): 国コード | ||
- | * State or Province Name: 州名/ | ||
- | * Locality Name: 市町村名 | ||
- | * Organization Name: 組織名 | ||
- | * Organizational Unit Name: 組織内ユニット名 | ||
- | * Common Name: アクセスされるホスト名を設定する www.example.com 等 | ||
- | * Email Address: 連絡先のメールアドレス | ||
- | * A challenge password: 未入力でエンター | ||
- | * An optional company name: 未入力でエンター | ||
- | |||
- | |||
- | この csr ファイルをこれから作る CA に署名させる。 | ||
- | |||
- | |||
- | ==== 証明書と鍵の格納場所 ==== | ||
- | |||
- | サーバやCAの証明書や鍵は、 /etc/ssl に格納するのが標準らしい。 | ||
- | |||
- | * / | ||
- | * ディレクトリのパーミッションは 755 root:root | ||
- | * 内部に格納するファイルのパーミッションも 644 root:root 等 | ||
- | |||
- | * / | ||
- | * ディレクトリのパーミッションは 710 root: | ||
- | * 内部に格納するファイルのパーミッションも 640 root: | ||
- | |||
- | ===== Certification Authority (CA) を作成 ===== | ||
- | |||
- | |||
- | 初めに Certification Authority (CA) の設定と使用するディレクトリを準備する。 | ||
- | |||
- | CA で使うディレクトリやファイルのパスを設定する。 | ||
- | |||
- | / | ||
- | |||
- | < | ||
- | $ sudo vi / | ||
- | </ | ||
- | |||
- | < | ||
- | dir = / | ||
- | </ | ||
- | |||
- | CAが使用するファイルをまとめるディレクトリを作成。 | ||
- | |||
- | < | ||
- | $ sudo mkdir -p / | ||
- | $ sudo mkdir -p / | ||
- | $ sudo mkdir -p / | ||
- | $ sudo mkdir -p / | ||
- | </ | ||
- | |||
- | |||
- | private ディレクトリには秘密鍵を置くのでパーミッションを変更する。 | ||
- | |||
- | < | ||
- | $ sudo chmod 700 / | ||
- | </ | ||
- | |||
- | CAが使用するファイルを作成。1つ目がCAが発行した証明書につけられる通し番号を記憶するファイル。2つ目は発行された証明書を記録するファイル。 | ||
- | |||
- | < | ||
- | $ sudo sh -c "echo ' | ||
- | $ sudo touch / | ||
- | </ | ||
- | |||
- | |||
- | ===== Certification Authority (CA) の鍵を作成 ===== | ||
- | |||
- | |||
- | |||
- | ルート認証局の鍵と証明書を作成する。10年間有効で鍵長は 2048 bit。 | ||
- | |||
- | < | ||
- | $ openssl req -newkey rsa:2048 -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 | ||
- | </ | ||
- | |||
- | 作成中に国コードなどの質問があるが、なにか入力しておかないと後で署名できなくなる。 | ||
- | |||
- | Country Name、 State of Province Name、 Organization Name はサーバの CSR を作成した時と同じものを入力する必要がある。 | ||
- | |||
- | 作成したファイルを移動する。 | ||
- | |||
- | < | ||
- | $ sudo mv cakey.pem / | ||
- | $ sudo chmod 600 / | ||
- | $ sudo chown root:root / | ||
- | $ sudo mv cacert.pem / | ||
- | $ sudo chmod 644 / | ||
- | $ sudo chown root:root / | ||
- | </ | ||
- | |||
- | ==== ブラウザインポート用の証明書を作成 ==== | ||
- | |||
- | 作成した CA をブラウザ等に信頼できる CA として登録する場合に使用する証明書を作成。 | ||
- | |||
- | < | ||
- | $ openssl x509 -inform pem -in / | ||
- | </ | ||
- | |||
- | ca.dar をブラウザに読み込ませる。 | ||
- | |||
- | |||
- | ===== 作成したCAで署名 ===== | ||
- | |||
- | |||
- | |||
- | server.csr を作成したCAで署名する。10年間有効な署名。 | ||
- | |||
- | < | ||
- | $ sudo openssl ca -in server.csr -config / | ||
- | </ | ||
- | |||
- | cakey.pem のパスワードを要求されるので入力する。 | ||
- | |||
- | 著名するかの確認があるので、y を入力する。 | ||
- | |||
- | < | ||
- | Sign the certificate? | ||
- | </ | ||
- | |||
- | CA のデータベースに登録するか聞かれるのでこれも y を入力する。 | ||
- | |||
- | < | ||
- | 1 out of 1 certificate requests certified, commit? [y/n] | ||
- | </ | ||
- | |||
- | |||
- | 署名されたファイルは / | ||
- | |||
- | server-cert.pem ふぁいるから server-cert.crt を作成する。 | ||
- | |||
- | < | ||
- | $ cp / | ||
- | $ cp ./ | ||
- | $ vi ./ | ||
- | </ | ||
- | |||
- | |||
- | -----BEGIN CERTIFICATE----- から ----END CERTIFICATE----- までをのこして、他を全削除する。 | ||
- | |||
- | 作成された pem crt をサーバに設定する等して使用する。 | ||
- | |||
- | 作業したディレクトリには以下のファイルがあるはず。 | ||
- | |||
- | ^ ファイル名 ^ 説明 ^ | ||
- | | ca.der | ブラウザ等に読み込ませ CA の情報をインポートする | | ||
- | | server-cert.crt | 署名されたサーバの証明書 (crt 形式) | | ||
- | | server-cert.pem | 署名されたサーバの証明書 (pem 形式) | | ||
- | | server.csr | 著名後は必要ないので削除可 | | ||
- | | server.key | サーバの秘密鍵 (パスワードなし) | | ||
- | | server.key.secure | サーバの秘密鍵 (パスワードあり) | | ||
- | |||
- | |||
- | server.key、server-cert.crt、server-cert.pem を /etc/ssl ディレクトリにコピーしておく。 | ||
- | |||
- | |||
- | < | ||
- | $ sudo cp ./ | ||
- | $ sudo chmod 640 / | ||
- | $ sudo chown root: | ||
- | $ sudo cp server-cert.crt server-cert.pem / | ||
- | $ sudo chmod 644 / | ||
- | </ | ||
ubuntu-server-14-04/self-signed-certificate.1420627855.txt.gz · 最終更新: 2015/01/07 19:50 by admin