LoginSignup
22

More than 5 years have passed since last update.

OpenSSL で証明書確認とか設定とか

Last updated at Posted at 2014-04-10

忘れるからメモという名のコピペ

作成手順

  • openssl コマンドを使って SSL 自己証明書を作成する。
1. 秘密鍵(server.key)の作成

    openssl genrsa -aes256 1024 > server.key

1. 公開鍵(server.csr)の作成

    openssl req -new -sha256 -key server.key > server.csr

1. デジタル証明書(server.crt)の作成

    openssl x509 -in server.csr -sha256 -days 365 -req -signkey server.key > server.crt

1. Apache の ssl.conf を編集する。
  • 秘密鍵(server.key)の作成

    次のコマンドで秘密鍵(server.key)を作成する。

    openssl genrsa -aes256 1024 > server.key
    

    パスフレーズの入力を求められるので、任意のパスフレーズを入力する。

  • Apache 起動時にパスフレーズの入力を省略する

    上記の方法で作成した秘密鍵(server.key)は、作成時に入力たパスフレーズで暗号化された状態になっているので、Apache を起動する時に復号化するためのパスフレーズの入力を求められる。

1. 秘密鍵 (server.key) ファイルをあらかじめ復号化しておく方法

    - server.key の名前を変更する。

        # mv server.key server.key.back

    - 次のコマンドでパスフレーズを解除する。

        # openssl rsa -in server.key.back > server.key

    - パスフレーズの入力を求められるので、パスフレーズを入力する。

        Enter pass phrase for server.key.back:パスフレーズ
        writing RSA key
2. Apache起動時のパスフレーズ入力を自動化する方法

    - SSLPassPhraseDialog ディレクティブで、パスフレーズを標準出力するような外部コマンドを指定し、パスフレーズを自動入力するように設定する。

    - 外部コマンドは何でもよいので、簡単なシェルスクリプトを用意する。例えば下記のような内容のファイル /etc/httpd/conf.d/pass-phrase.sh を作り、パーミッションを 500 にする。
#!/bin/sh
echo "パスフレーズ"
    - SSLPassPhraseDialog ディレクティブは次のように指定する。

        # SSLPassPhraseDialog  builtin
        SSLPassPhraseDialog   exec:/etc/httpd/conf.d/pass-phrase.sh
  • 公開鍵(server.csr)の作成

    WebサーバのCSRファイル(server.csr)を作成する。

    そして、ついでにSHA256に対応しておく。

    openssl req -new -sha256 -key server.key > server.csr
    
Enter pass phrase for 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) [AU]:JP
State or Province Name (full name) [Some-State]:Osaka
Locality Name (eg, city) []:Osaka-shi,Chuo-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc.
Organizational Unit Name (eg, section) []:Example Section
Common Name (eg, YOUR name) []:example.com
Email Address []:空白

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:空白
An optional company name []:空白
  • デジタル証明書(server.crt)の作成

    SSL 通信には CA(Certification Authority, 認証局)が発行した証明書が必要だが、自分自身でデジタル証明書(server.crt)作成する。(このデジタル証明書の発行をおこなっている第三者機関が VeriSign などになるが、自分自身でデジタル証明書をつくることもできる。)

    openssl x509 -in server.csr -sha256 -days 365 -req -signkey server.key > server.crt
    

確認方法

作成した csr (公開鍵)ファイルから鍵情報を見る

$ openssl x509 -noout -text -in (crtファイル)
  • Not Before: 証明書が発行された日時
  • Not After: 証明書の有効期限

参考: http://www.maruko2.com/mw/Apache/SSL自己証明書の作成とmod_sslの設定
参考: http://timudondon.ti-da.net/e2422928.html

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22