OSS Fan ~OSSでLinuxサーバ構築~

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

SSL証明書(自己証明書)作成

カテゴリ:OSSセットアップ | ソフトウェア:OpenSSL | タグ:
最終更新日:2020/11/30 | 公開日:2013/03/17

目次

構成

サーバ構成

OSバージョン

CentOS release 5.5 (Final) 32bit

パッケージ一覧

Linuxのインストールで必要なパッケージは自動的にインストールされているので、 追加のインストールは不要です。

環境構築

設定

秘密鍵の作成

 まずは「RSA秘密鍵(server.key)」を作成します。 暗号鍵の鍵長は2048bitとします。 特にこの長さでなければならないということはありませんが、 2009年10月以降は日本ベリサイン社でも1024bit鍵長のCSRは 受付停止になったようなので、世間の流れに乗っておきます。

# cd /etc/pki/tls/certs/
# openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
....................................................................+++
........+++
e is 65537 (0x10001)
Enter pass phrase for server.key: ←パスフレーズを入力(文字は表示されません)
Verifying - Enter pass phrase for server.key: ←パスフレーズを再入力(文字は表示されません)

秘密鍵のパスフレーズ削除

 次に秘密鍵に設定されたパスフレーズを削除します。 これを削除しておかないとSSL通信を行う度にパスフレーズの入力を求められます。 不特定多数の人に公開するサイトでは全く不要です。

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key

CSR(証明書署名要求)の作成

 続いて「証明書署名要求(server.csr)」を作成します。 通常はこの署名要求のファイルを日本ベリサイン社等に 送付してSSL証明書を発行してもらいます。

# openssl req -new -key server.key -out server.csr
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) [GB]:JP
State or Province Name (full name) [Berkshire]:Tokyo
Locality Name (eg, city) [Newbury]:Edogawa-ku
Organization Name (eg, company) [My Company Ltd]:Ranonet Ltd.
Organizational Unit Name (eg, section) []: ←何も入力せずに[リターン]キーを押す
Common Name (eg, your name or your server's hostname) []:www.ranonet.ne.jp
Email Address []: ←何も入力せずに[リターン]キーを押す

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←何も入力せずに[リターン]キーを押す
An optional company name []: ←何も入力せずに[リターン]キーを押す

SSL証明書の作成

 最後に証明書署名要求とRSA秘密鍵を元に「SSL証明書(server.crt)」を作成します。 通常は公的に信頼された第三者(業者)に署名してもらってこそ意味があるのですが、 通信をSSLで暗号化するという目的を果たすだけであれば自分自身で署名しても 効果は同じです。 社内のみで利用する場合、ごく限られた一部の人のみに情報を公開する場合などは このように自己署名の証明書を使うことが多々あります。 頻繁に証明書を再作成するのは手間がかかるので、証明書の有効期間は10年間としています。

# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=JP/ST=Tokyo/L=Edogawa-ku/O=Ranonet Ltd./CN=www.ranonet.ne.jp
Getting Private key

ファイルのパーミッション変更

 以上でSSL証明書の作成は完了ですが、サーバ上の一般ユーザに 鍵の中身を不正に読み取られないようにパーミッションを変更しておきます。 鍵の内容を書き換えることはないため、所有者の読み取り権限のみあれば十分です。 また、デフォルトのディレクトリ構成では秘密鍵だけ別のディレクトリで管理 するような構成になっているので、これに従って作成した秘密鍵を移動します。

# chmod 400 ./server.*
# mv ./server.key /etc/pki/tls/private/