OpenSSLによる電子証明書の入手
- Details
-
Category: OpenSSL
-
Written by Administrator
Webブラウザを使ったeショッピングサイトを利用すると「保護されたページ」として鍵マークが表示されたページが現れるのを見たことがあると思います。 このようなページから入力されたデータはSSLという方法によって暗号化されたデータでサーバとの間でデータのやり取りが行われます。 この暗号化の為に利用されるのがOpenSSLで、OpenSSLはSSLまたはTLSによる暗号化セッションを実現させます。 ApacheやPostfix 、dovecotといったサーバソフトでは、OpenSSLを利用することで、クライアントとサーバ間のデータの暗号化が可能になります。
OpenSSLによる暗号化のためには、サーバソフトを動かすマシン上でそのマシンの電子証明書をCA(認証局)より取得する必要があります。 電子証明書の取得は次の手順で行います。
1.プライベートキー(秘密鍵)の作成
電子証明書を入手するには最初に電子証明書を使いたいマシン上に暗号化の生成の基になるプライベートキーを用意する必要があります。 プライベートキーは次の方法で作成できます。(ランダムデータ生成用として/var/log/messageを使いましたが、内容がユニークになるファイルであれば何を指定しても構いません)
(Debian, Ubuntuの場合)
$ sudo openssl genrsa -aes256 -rand /var/log/messages -out /etc/ssl/private/server.key 1024 ---(暗号方法をDES3にしたい場合は"-aes256"の代わりに"-des3"を指定してください。またキー長は1024以外でも指定できます。(通常は1024で問題ないです))
(Redhat, CentOSの場合)
# openssl genrsa -aes256 -rand /var/log/messages -out /etc/ssl/private/server.key 1024
以下のように表示されるので、パスフェーズ(パスワード)を入力します。
Generating RSA private key, 1024 bit long modulus ......++++++ ..........................++++++ e is 65537 (0x10001) Enter pass phrase for /etc/ssl/private/server.key: パスフェーズを入力 Verifying - Enter pass phrase for /etc/ssl/private/server.key: 確認の為もう一度パスフェーズ入力 |
作成するプライベートキーのファイル名は(ここでは"server.key"としてますが)どんな名前でも構いません。ただし、重要なファイルなのでアクセス権が制限されたディレクトリに保存するようにしてください。
これで、プライベートキーの作成は完了です。 ただし、このキーは暗号化された状態で、このキーをサーバでそのまま利用するとサーバの起動時にパスフレーズを求めてきてしまいますので、暗号化を解除したキーも作成しておきます。
(Debian, Ubuntuの場合)
$ sudo openssl rsa -in /etc/ssl/private/server.key -out /etc/ssl/private/nopass_server.key
(Redhat, CentOSの場合)
# openssl rsa -in /etc/ssl/private/server.key -out /etc/ssl/private/nopass_server.key
以下のように表示されるので、パスフェーズ(パスワード)を入力します。
Enter pass phrase for /etc/ssl/private/server.key: パスフェーズを入力 writing RSA key #
|
(トピック) OpenSSLによるプライベートキー作成の際に、暗号化の方式として、「des」「des3」「aes128」「aes192」「aes256」の中から選択できます。 方式としては現在のところ「aes256」が最強と云われています。 |
2.署名要求書(CSR)の作成
(1).openssl.cnfの編集
最初にOpenSSL用の設定ファイルを自身の環境に合わせて編集しておきましょう。
/etc/ssl/openssl.cnf
;; #################################################################### [ ca ] default_ca = CA_default # The default ca section
#################################################################### [ CA_default ] # dir = ./demoCA dir = /etc/ssl/CA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. #unique_subject = no # Set to 'no' to allow creation of ;; ;; default_days=3650 # several ctificates with same subject. ;; ;; # For the CA policy [ policy_match ] countryName = match stateOrProvinceName = optional organizationName = match :: [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = JP countryName_min = 2 countryName_max = 2
stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Tokyo
localityName = oote-machi 1,Chiyodaku-ku
0.organizationName = Organization Name (eg, company) 0.organizationName_default = Hogehoge corp. organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = ;; ;; emailAddress = Email Address emailAddress_max = 64 :: ;; [ usr_cert ] # basicConstraints=CA:FALSE basicConstraints=CA:TRUE ;;
|
openssl.cnfを編集しなくても署名要求書を作成することはできます。 ただ、要求書を作成の度に同じ内容を打ち込むのはばからしいので、最初にopenssl.cntを編集しておくことをお勧めします。
(2).署名要求書(CSR)ファイルの作成
プライベートキーを基に、認証機関(CA:ベリサイン、自己認証局等)に認証して貰うための署名要求書(CSR)ファイルを作成します。 以下のコマンドを実行してCSRを作成します。(期間を10年分で要求します)
(Debian, Ubuntuの場合)
$ sudo openssl req -new -days 3650 -key /etc/ssl/private/server.key -out /etc/ssl/www_csr.pem
(Redhat, CentOSの場合)
# openssl req -new -days 3650 -key /etc/ssl/private/server.key -out /etc/ssl/www_csr.pem
以下のような画面が表示されるので、必要な箇所で入力を行います。
nter pass phrase for /etc/ssl/private/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) [JP]: [Enter] State or Province Name (full name) [Tokyo]: [Enter] oote-machi 1,Chiyodaku-ku []: [Enter] Organization Name (eg, company) [Hogehoge corp.]: [Enter] Organizational Unit Name (eg, section) []: [Enter] Common Name (eg, YOUR name) []: www.example.jp Email Address []:
This email address is being protected from spambots. You need JavaScript enabled to view it.
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: [Enter] An optional company name []: [Enter] #
|
作成する署名要求書のファイル名は(ここでは"www_csr.key"としてますが)どんな名前でも構いません。ただし、CSRを作成する際に聞かれる"Common Name"にはDNSに登録されている名前と同じものを使う必要があるので、何を指定したかが判るようにファイル名を付けると良いと思います。
作成された 署名要求書(www_csr.pem)を認証局(CA)に送って電子証明書をつくってもらいます。 社内だけの利用で証明書を自己CAにて認証を行いたい場合には「自己認証局によるサーバ署名要求への署名」の方法を参考にしてください。 なお、(ベリサイン等)正式なCAの認証を受ける場合には、CSRと一緒に会社の登記簿や社長印なども併せて必要になる事があります。 どんな書類が必要かは依頼するCAのホームページなどで確認してください。