• このエントリーをはてなブックマークに追加

自己署名証明書(オレオレ証明書)を作成してみた。

  • このエントリーをはてなブックマークに追加

095205

こんにちは、Zaco shinです。

開発/検証環境でHTTPS通信をさせたく、自己署名証明書を作成してみたので、備忘的に残しておきます。

スポンサーリンク
Sponsords Link

 必要な鍵を作成する

今回は、opensslコマンドを使って、ssl.keyというディレクトリに情報を作っていきたいと思います。なのであらかじめ、所定のディレクトリに移動しておきます。(ディレクトリがなかったらmkdirで作っておいてください。)

#所定のディレクトリに移動
cd /etc/httpd/conf/ssl.key/

秘密鍵を作成する

まずは秘密鍵を作ります。今回はzaco.keyという名前で秘密鍵を作りたいと思います。

#秘密鍵(zaco.key)を作成する
sudo openssl genrsa -aes256 -out zaco.key 2048

#コマンド実行後↓↓
Generating RSA private key, 2048 bit long modulus
..............................+++
..........................................................+++
e is 65537 (0x10001)
Enter pass phrase for zaco.key: 秘密鍵のパスワードを入力
Verifying - Enter pass phrase for zaco.key: 同じものをもう一度

こんな感じです。2048ビットの秘密鍵を256ビットAESで暗号化した形で作成しました。暗号化しなくて作成できます。その時は、-aes256の部分を抜いてコマンドで作成できます。

sudo openssl genrsa -out zaco.key 2048

CSRを作成する

次に、先ほど作成した秘密を基にしてCSRを作成します。

#CSRを作成する。アルゴリズムはSHA2を利用する
sudo openssl req -new -key zaco.key -sha256 -out zaco.csr

#コマンド実行後↓↓。対話形式で情報入力するように聞かれるので適当に入力します
Enter pass phrase for zaco.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) [XX]:JP ←国名とか
State or Province Name (full name) []:Tokyo ←県名とか
Locality Name (eg, city) [Default City]:Shinagawa-ku ←市名とか
Organization Name (eg, company) [Default Company Ltd]:zacodesign ←会社名とか
Organizational Unit Name (eg, section) []:ZACO ←組織名とか
Common Name (eg, your name or your server's hostname) []:xxx.xxx.xxx.xxx ←サイトの名前。IPアドレスとか
Email Address []: ←emailアドレスとか

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←証明書を破棄する時のパスワード
An optional company name []: ←別の組織名の入力欄らしい

Common Nameの部分ですが、サイトにIPアドレスでアクセスする際は、IPアドレスを入力して、ドメインでアクセスする際は、ドメイン名を入力します。
ここの設定で少しハマったので、要確認です!私は開発環境で使おうと思っているので、IPアドレスを入力しました。

サーバ証明書の作成

先ほどのCSRファイルを基にサーバ証明書を作ります。
本来なら認証機関がサーバ証明書を発行して「このサイトは信頼できますよ」と証明できるのですが、今回は自らサーバ証明書を作成します。

#証明書(zaco.crt)の作成。
sudo openssl x509 -in zaco.csr -days 365 -req -signkey zaco.key -sha256 -out zaco.crt

#コマンド実行後↓↓
key zaco.key -sha256 -out zaco.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Shinagawa-ku/O=zacodesign/OU=ZACO/CN=xxx.xxx.xx.xx
Getting Private key
Enter pass phrase for zaco.key:秘密鍵のパスフレーズ

今回は、1年間でSHA256アルゴリズムでサーバ証明書を作成しました。
これで必要な情報をすべてそろいました。

Apacheの設定(ssl.conf)を変更する

ssl.confの設定を変更します。

#ssl.confを開く
vi /etc/httpd/conf.d/ssl.conf
#下記の2行を追加する
SSLCertificateFile /etc/httpd/conf/ssl.key/zaco.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/zaco.key

# SSLCertificateFile,# SSLCertificateKeyFileでコメントアウトされている部分があったので今回はそれぞれの下に今回作成したサーバ証明書と秘密鍵のパスを指定しました。
最後にアパッチを再起動させます。

#Apacheを再起動させる
sudo service httpd restart

httpd を停止中: [OK]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server xx.xxx.xxx.xx:443 (RSA)
Enter pass phrase: 秘密鍵のパスワード

OK: Pass Phrase Dialog successful.
[ OK ]

これで、https通信が出来るようになります。今回秘密鍵を暗号化したので、Apacheを起動するたびに聞かれますが、これは入力を自動化したりもしくはパスフレーズをなくしたりすることで対応できます。これは後々やった後に記事にしようかと。。

あとhttpsだと443使うので、iptablesとかで443ポートは空ける設定とかも忘れずに!

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link