CentOS6 / Ubuntu14.04 でのサーバ証明書の作成方法

ALL
スポンサーリンク

CentOS6.5 / Ubuntu14.04 でのサーバ証明書の作成方法です。
いわゆるオレオレ証明書になります。

以下作業は root で行ってください。

必要パッケージインストール

必要なパッケージをインストールします。

CentOS6.5の場合
 yum install openssl
Ubuntu14.04の場合
 apt-get install openssl

サーバ用秘密鍵(server.key)の作成

下記を実行します。

openssl genrsa -aes128 2048 > server.key

実行すると、パスフレーズを要求されますので、秘密鍵を暗号化する為のパスフレーズを入力します。
パスフレーズは空には出来ませんので、4文字以上でパスフレーズを入力して下さい。
パスフレーズ入力後、もう一度確認の為、入力を求められるので、再度入力して下さい。

2048ビット長のRSA 秘密鍵を生成し、AES 128bitで暗号化して server.key を出力します。

出力された server.key がサーバ用秘密鍵です。

次に、サーバ用秘密鍵(server.key)からパスフレーズを削除します。
server.keyの作成時に入力したパスフレーズを要求されるので、入力します。
サーバ用秘密鍵(server.key)からパスフレーズを削除したものが生成されます。

openssl rsa -in server.key -out server.key

パスフレーズを削除するのは、サーバ用秘密鍵への操作で要求されるパスフレーズの入力を避ける為です。
パスフレーズを削除しておかないと、例えば、apache の設定でサーバ用秘密鍵を指定していた場合、apache起動時に server.key のパスフレーズの入力が要求され、apache が自動起動できなくなります。

但し、パスフレーズの削除は、AES 128bit でパスフレーズにより暗号化されていたサーバ用秘密鍵の暗号化の解除を意味します。
apache の起動時等でパスフレーズの入力を行っても良い場合は、上記の手順でのパスフレーズ削除は不要です。

署名要求ファイル(server.csr)の作成

署名要求ファイル(server.csr)を作成します。

openssl req -utf8 -new -key server.key -out server.csr

実行後、以下のように入力します。赤字のように入力して下さい。
「Common Name」と「A challenge password」以外の箇所は、サーバ証明書内に記述される文字列の指定です。これらは証明書のプロパティなどで表示される内容で、機能的には影響ありません。

Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:都道府県を指定します。または単に Enter だけでも構いません。 例) Tokyo
Locality Name (eg, city) [Newbury]:市区町村を指定します。または単に Enter だけでも構いません。 例) Fuchu
Organization Name (eg, company) [My Company Ltd]:組織名を指定します。または単に Enter だけでも構いません。
Organizational Unit Name (eg, section) []:部署名を指定します。または単に Enter だけでも構いません。
Common Name (eg, your name or your server's hostname) []:サーバ名のFQDN
Email Address []:メールアドレスを指定します。または単に Enter だけでも構いません。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:Enterキー
An optional company name []:Enterキー

Common Name でサーバ名を必ずFQDNで入れて下さい。
FQDN で入力しておかないと、このサーバを将来的に Windows から利用する際に不都合が生じます。
この後の手順で生成するサーバ証明書(server.crt)は、Windowsのインターネットエクスプローラで証明書インポート出来ますが、その際に不正な証明書として扱われてしまいます。

自己署名したサーバ証明書(server.crt)の作成

自己署名したサーバ証明書(server.crt)を作成します。

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

このサーバ証明書の有効期限は現在時刻から、-days で指定した日数経過までとなります。

アクセス権を設定します。

chmod 400 server.*

これで証明書の作成は完了です。

使用例

作成したサーバ証明書の利用例です。
apache でSSL暗号化通信を行う https でアクセスする為の設定です。

CentOS の場合

server.crt と server.key を /etc/pki/tls/certs/ にコピー後、こちら の「apacheの設定」の箇所を参照して下さい。
参照先でも、サーバ証明書の作成方法を一部異なるコマンドで説明していますが、本記事で作成される証明書と同等です。

Ubuntu の場合
2015/1/19 手順を修正しました

Ubuntuの apache でSSL暗号化通信を行うには、事前に以下の作業が必要です。

a2enmod ssl
a2ensite default-ssl

作成した証明書を以下の箇所に置きます。

/etc/ssl/certs/server.crt
/etc/ssl/private/server.key

上記の箇所に置いた証明書を /etc/apache2/sites-available/default-ssl.conf で指定します。

SSLCertificateFile 、SSLCertificateKeyFile の行をコメントアウトした後、末尾に以下を追加します。

SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

または SSLCertificateFile 、SSLCertificateKeyFile の行を上の内容に置き換えます。

設定後、apache を再起動します。

service apache2 restart

これで https での SSL通信時に作成したサーバ証明書が利用されます。

参考

https でアクセス出来るようにするための apache の設定 パソコン鳥のブログ

ubuntuに自己認証局の証明書を登録 | misty-magic.h

コメント