CentOSで証明書を作成する

2017年2月10日

Webサーバを運用していると「httpsでアクセスしたい」と言われることがよくあります。
しかも、無料で・・・。

証明書発行してもらうのにもお金かかるんですけど・・・。

オレオレ証明書ならお金もかからず、HTTPSの設定もできるってことで、オレオレ証明書を作成し、WEBサーバに設定した時の手順をまとめました。
もし、同じ悩みを抱えている方がいれば参考にしてもらえればと思います。

環境

  • OS:CentOS 6.x
  • WebServer:Apache 2.2

証明書作成手順

mod_sslインストール

mod_sslをインストールします。
これがないとSSLが使えません。

# yum -y install mod_ssl

証明書作成

証明書の作成に必要な秘密鍵を作成します。

まず、秘密鍵を配置したい場所へ移動します。

# cd /etc/pki/tls/certs/

そこで秘密鍵を作成します。

# make [ドメイン名].key
# openssl rsa -in [ドメイン名].key -out [ドメイン名].key

この時[ドメイン名]にはFQDNを設定します。

次に、CSRファイルを作成します。

# make [ドメイン名].csr

上記コマンド実行すると下記のようなメッセージが出るので、それぞれ値を入力していきます。

Country Name:[国コード]
State or rovince Name:[県]
Locality Name:[市]
Organization Name:[組織名]
Organizational Unit Name:[部署名]
Common Name:[ドメイン名]
Email Address:[メールアドレス]
A challenge password:空欄
An optional company name:空欄

Country Nameには国コードを設定します。
日本は「JP」になります。

State or rovince Nameには都道府県名を設定します。
「Tokyo」とか「Osaka」とか。

Locality Nameには市区町村名を設定します。
「Machida」とか。

Organization Nameには組織名や会社名を設定します。
個人の場合は特に入力しなくても大丈夫です。

Organization Unit Nameには部署名を設定します。
個人の場合は特に入力しなくても大丈夫です。

Common Nameには秘密鍵を作った時のファイル名、つまり、FQDNを設定します。

Email Addressにはメールアドレスを設定します。

A challenge passwordは空欄のままでOKです。

An optional companyも空欄のままでOKです。

これでCSRファイルの作成が完了します。

最後に、証明書(公開鍵)を作成します。

ここでは約10年間有効な証明書を作成したいと思います。
有効期間を長く設定してるのは、有効期限が切れて証明書を再作成する手間が惜しいからです。
ここは状況に応じて臨機応変に変更すれば良いと思います。

# openssl x509 -in [ドメイン名].csr -out [ドメイン名].crt -req -signkey [ドメイン名].key -days 3650

これで証明書(公開鍵)の作成が完了しました。

Apacheの設定

最後にApacheの設定を行い、Webサーバが先ほど作成した証明書を利用できるようにします。

ssl.confの編集

mod_sslをインストールすると「/etc/httpd/conf.d」にssl.confというファイルが作成されると思いますので、
そのファイルを編集していきます。

# vim /etc/httpd/conf.d/ssl.conf

~省略~
SSLCertificateFile /etc/pki/tls/certs/[ドメイン名].crt
~省略~
SSLCertificateKeyFile /etc/pki/tls/certs/[ドメイン名].key
~省略~

それぞれssl.confというファイルの「106行目」「113行目」あたりに上記の記述があると思いますので、先ほど作成したファイル名を設定します。

設定が完了したら忘れずにApacheを再起動します。

# /etc/rc.d/init.d/httpd restart

これで、Webサーバでオレオレ証明書が使えるようになります。