ユーザ用ツール

サイト用ツール


ubuntu-server-14-04:self-signed-certificate

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
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 で。 
- 
-<code> 
-$ openssl genrsa -des3 -out server.key.secure 2048 
-</code> 
- 
-パスワードを聞かれるので2回同じものを入力。 
- 
-今作った鍵はパスワードで暗号化された鍵。サーバデーモンで使用する場合、毎回パスワードを入力して使用していては利便性に問題があるので、パスワードを解除した鍵を作成。 
- 
-<code> 
-$ openssl rsa -in server.key.secure -out server.key 
-</code> 
- 
- 
-===== Certificate Signing Request を作成 ===== 
- 
- 
-Certificate Signing Request (CSR) を作成する。 
- 
-<code> 
-$ openssl req -new -key server.key -out server.csr 
-</code> 
- 
- 
-いろいろ質問されるので答えておく。適当にエンターすると署名できない。'.'を入力するとブランクになる。 
-  * 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 に格納するのが標準らしい。 
- 
-  * /etc/ssl/certs 証明書 (公開情報) 
-    * ディレクトリのパーミッションは 755 root:root 
-    * 内部に格納するファイルのパーミッションも 644 root:root 等 
- 
-  * /etc/ssl/private 秘密鍵 (機密情報) 
-    * ディレクトリのパーミッションは 710 root:ssl-cert 
-    * 内部に格納するファイルのパーミッションも 640 root:ssl-cert 等に設定して慎重に管理 
- 
-===== Certification Authority (CA) を作成 ===== 
- 
- 
-初めに Certification Authority (CA) の設定と使用するディレクトリを準備する。 
- 
-CA で使うディレクトリやファイルのパスを設定する。 
- 
-/etc/ssl/openssl.cnf の [ CA_default ] 内を変更。 
- 
-<code> 
-$ sudo vi /etc/ssl/openssl.cnf 
-</code> 
- 
-<code> 
-dir             = /etc/ssl/CA           # Where everything is kept 
-</code> 
- 
-CAが使用するファイルをまとめるディレクトリを作成。 
- 
-<code> 
-$ sudo mkdir -p /etc/ssl/CA/certs 
-$ sudo mkdir -p /etc/ssl/CA/private 
-$ sudo mkdir -p /etc/ssl/CA/newcerts 
-$ sudo mkdir -p /etc/ssl/CA/crl 
-</code> 
- 
- 
-private ディレクトリには秘密鍵を置くのでパーミッションを変更する。 
- 
-<code> 
-$ sudo chmod 700 /etc/ssl/CA/private 
-</code> 
- 
-CAが使用するファイルを作成。1つ目がCAが発行した証明書につけられる通し番号を記憶するファイル。2つ目は発行された証明書を記録するファイル。 
- 
-<code> 
-$ sudo sh -c "echo '01' > /etc/ssl/CA/serial" 
-$ sudo touch /etc/ssl/CA/index.txt 
-</code> 
- 
- 
-===== Certification Authority (CA) の鍵を作成 ===== 
- 
- 
- 
-ルート認証局の鍵と証明書を作成する。10年間有効で鍵長は 2048 bit。 
- 
-<code> 
-$ openssl req -newkey rsa:2048 -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 
-</code> 
- 
-作成中に国コードなどの質問があるが、なにか入力しておかないと後で署名できなくなる。 
- 
-Country Name、 State of Province Name、 Organization Name はサーバの CSR を作成した時と同じものを入力する必要がある。 
- 
-作成したファイルを移動する。 
- 
-<code> 
-$ sudo mv cakey.pem /etc/ssl/CA/private/ 
-$ sudo chmod 600 /etc/ssl/CA/private/cakey.pem 
-$ sudo chown root:root /etc/ssl/CA/private/cakey.pem 
-$ sudo mv cacert.pem /etc/ssl/CA/ 
-$ sudo chmod 644 /etc/ssl/CA/cacert.pem 
-$ sudo chown root:root /etc/ssl/CA/cacert.pem 
-</code> 
- 
-==== ブラウザインポート用の証明書を作成 ==== 
- 
-作成した CA をブラウザ等に信頼できる CA として登録する場合に使用する証明書を作成。 
- 
-<code> 
-$ openssl x509 -inform pem -in /etc/ssl/certs/cacert.pem -outform der -out ca.der 
-</code> 
- 
-ca.dar をブラウザに読み込ませる。 
- 
- 
-===== 作成したCAで署名 ===== 
- 
- 
- 
-server.csr を作成したCAで署名する。10年間有効な署名。 
- 
-<code> 
-$ sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf -days 3650 
-</code> 
- 
-cakey.pem のパスワードを要求されるので入力する。 
- 
-著名するかの確認があるので、y を入力する。 
- 
-<code> 
-Sign the certificate? [y/n]: 
-</code> 
- 
-CA のデータベースに登録するか聞かれるのでこれも y を入力する。 
- 
-<code> 
-1 out of 1 certificate requests certified, commit? [y/n] 
-</code> 
- 
- 
-署名されたファイルは /etc/ssl/CA/newcerts/01.pem にある。以後署名するたびに番号が増えていく。 
- 
-server-cert.pem ふぁいるから server-cert.crt を作成する。 
- 
-<code> 
-$ cp /etc/ssl/CA/newcerts/01.pem ./server-cert.pem 
-$ cp ./server-cert.pem ./server-cert.crt 
-$ vi ./server-cert.crt 
-</code> 
- 
- 
------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 ディレクトリにコピーしておく。 
- 
- 
-<code> 
-$ sudo cp ./server.key /etc/ssl/private 
-$ sudo chmod 640 /etc/ssl/private/server.key 
-$ sudo chown root:ssl-cert /etc/ssl/private/server.key 
-$ sudo cp server-cert.crt server-cert.pem /etc/ssl/certs 
-$ sudo chmod 644 /etc/ssl/certs/server-cert.crt /etc/ssl/certs/server-cert.pem 
-</code> 
  
ubuntu-server-14-04/self-signed-certificate.1566534831.txt.gz · 最終更新: 2019/08/23 13:33 by admin