SSL自己署名証明書(オレオレ証明書)を作成する (CentOS/Debian/Docker/Ubuntu)

Apache

自己署名SSL証明書(オレオレ証明書)を作成する

Webサイトを開発する際に、ローカル開発環境やテスト環境上でSSL/TLS(https)通信が必要になり、SSL証明書が必要になることってありますよね?

そんな時に便利なのが「自己署名SSL証明書(オレオレ証明書)」です。


なぜ「自己署名SSL証明書(オレオレ証明書)」が必要なのか?

正式にSSL証明書を取得しようとすると以下のものが必要になります。

  • SSL証明書発行費用(有料/無料)
  • ドメイン名(有料/無料)
  • ドメイン名でインターネットからアクセスできるサーバー環境(有料/無料)

こちらを全てそろえてからでないとSSL/TLS(https)通信できないのは不便すぎます。ちょっと試してみたいだけの場合や、ドメイン名やサーバー契約は開発中はまだ存在しないのが普通です。しかも通常使うSSL発行費用はそれなりに高額です。

そういった場合でもSSL/TLS(https)通信できるようにするのが「自己署名SSL証明書(オレオレ証明書)」です。

このページではそもそも「自己署名SSL証明書(オレオレ証明書)は何か?」や「SSLの仕組みを理解」を理解しながら、各LinuxOSへの証明書の導入方法を紹介しています。

自己署名SSL証明書(オレオレ証明書)とは?

そもそもオレオレ証明書とは「自己署名SSL証明書」とのことです。

本来、SSL証明書は「通信の暗号化」「サイトの存在証明」を目的に、認証機関である認証局に発行してもらうものです。

そのSSL証明書を自分で作っちゃおう!というのがオレオレ証明書です。
認証局から署名してもらうのではなく、自分で署名しちゃうので「自己署名」のSSL証明書なのです。

本番では使用しない!

当然、正式にどこからも認証はされていませんから、不特定多数がアクセスする本番環境でこの証明書は使ってはいけません。

opensslをインストール(Linux)

自己署名SSL証明書(オレオレ証明書)を作成するにはopensslコマンドが必要になるのでインストールしましょう。

CentOSにopensslをインストール

# yum -y install openssl

Debian/Ubuntu/Dockerにopensslをインストール

※Dockerの公式イメージはだいたいがDebian Linuxなのでこちらで対応できます

# apt-get update && apt-get install -y openssl

opensslコマンドでオレオレ証明書を作成する

一発で自動作成できるスクリプトとコマンドで1つ1つ作る2通りを紹介します。

スクリプトで一気に作成

こちらのスクリプトファイルを作って実行してください。
最初のドメイン名のところのみ書き換えてください。

#--------------------------------
#オレオレ証明書作成
#--------------------------------

domain="domain_name"; #←ここだけ設定する testdomain.com


base_dir=ssl
mkdir -p $base_dir/$domain

subject="/C=JP/ST=Tokyo/L=Tokyo City/CN=*.$domain"

server_private_key="$base_dir/$domain/server_$domain.key" #秘密鍵
server_csr="$base_dir/$domain/server_$domain.csr" #証明書署名要求(CSR)
server_cert="$base_dir/$domain/server_$domain.crt" #SSLサーバー証明書

echo "■秘密鍵作成→ $server_private_key"
openssl genrsa 2048 > $server_private_key #秘密鍵作成
echo "■CSR作成→ $server_csr"
openssl req -new -sha512 -newkey rsa:4096 -subj "$subject" -key $server_private_key > $server_csr #CSR作成(今回は使わない)
echo "■SSLサーバー証明書作成→ $server_cert"
openssl x509 -days 3650 -req -signkey $server_private_key < $server_csr > $server_cert #サーバー証明書作成

ls $base_dir/$domain

スクリプトではなくコマンドを1つ1つ実行する場合もあると思うので3つのコマンドを紹介しておきます。

コマンドの使い方

秘密鍵作成

openssl genrsa 2048 > 【秘密鍵のパス】 #秘密鍵作成

補足

コマンド genrsa RSA形式の秘密鍵の作成
オプション 2048 生成する秘密鍵のビット数
コピペで使える例
openssl genrsa 2048 > private.key

CSR作成

openssl req -new -sha512 -newkey rsa:4096 -subj "/C=JP/ST=Tokyo/L=Tokyo City/CN=*.【ドメイン名】" -key 【秘密鍵のパス】 > 【CSRのパス】 #CSR作成(今回は使わない)

補足

コマンド req 証明書の署名要求(CSR)の作成
オプション -new 新しい公開鍵&証明書要求を生成する。-keyにて指定した秘密鍵で公開鍵を作成
-sha512 CSRの改ざん防止用に使うハッシュ化アルゴリズムにSHA-2の512ビットを使用
-newkey 作成する秘密鍵で使用する暗号方式を指定
rsa:4096 公開鍵暗号RSAを4096ビットで作成する
-subj 識別名を”/type0=value0/type1=value1/type2=…”の形式で指定する
-key 使用する秘密鍵を指定
コピペで使える例

ドメインはtest.comとします。

openssl req -new -sha512 -newkey rsa:4096 -subj "/C=JP/ST=Tokyo/L=Tokyo City/CN=*.test.com" -key private.key > server.csr #CSR作成(今回は使わない)

SSLサーバー証明書作成

openssl x509 -days 3650 -req -signkey 【秘密鍵のパス】 < 【CSRのパス】 > 【サーバー証明書のパス】#サーバー証明書作成

補足

コマンド x509 X.509証明書の署名要求(CSR)の作成
オプション -days 証明書の有効日数
-req 証明書生成
-signkey オプションで署名に使用する秘密鍵を指定
コピペで使える例
openssl x509 -days 3650 -req -signkey private.key < server.csr > server.crt

Webサーバーに設定

設定ファイルに反映させるにはこちらの記事をご覧ください。

警告なしでブラウザchromeで使う

chromeで警告なしで見れるように

執筆予定

Internet Explore(IE)で警告なしで見れるように

執筆予定

コメント

タイトルとURLをコピーしました