OpenSSLの自己署名証明書を警告が出ないように作成する

150_ssl_right-10画像

OpenSSLは、暗号化や復号化、デジタル署名、公開鍵証明書の生成や検証、ランダムなデータ生成など、さまざまな暗号技術を提供する。これにより、Webサーバーとクライアント間の通信など、セキュアな通信を実現することができる。また、世界中の多くのWebサーバーで使用されており、多くのアプリケーションやデバイスで使用されることもある。

OpenSSLは、オープンソースソフトウエアで無料で使用でき、多くの開発者によってメンテナンスされている。

自己署名証明書は、LAN内での通信を暗号化し、ある程度のセキュリティを確保することができる。しかし、完全な個人情報保護のためには、ファイアウォールやVPNなどの他のセキュリティ対策と組み合わせる必要があり、証明書の管理も重要である。

【自己署名証明書を利用する際の注意点】

信頼性の低い環境では使用しない : 記すほどでもないが、公的機関など信頼できる第三者によって発行された証明書を使用する方がより安全である。

定期的な更新 : 証明書の有効期限を短くして、有効期限が切れる前に更新すること。

中間者攻撃対策 : VPNなど、中間者攻撃を防ぐための対策を講じると安全性はより向上する。

OpenSSLで作成した自己署名証明書はCA(認証局)から得たものではないため、以下画像のようにブラウザー上ではセキュリティ警告が出てしまう。このまま自宅で使用するには問題ないと思うが、社内などで使用していると信ぴょう性の問題などが発生する可能性がある。

150_ssl_right-12画像

このページでは、OpenSSLでLAN内のサーバーに設定した自己署名証明書がセキュリティ警告が出ないように作成する方法を、画像を用いながら記すことにする。

------[ 目 次 ]------

1、SANテキストを作成

2、SSL証明書の作成

3、SSL証明書の設定

4、SSL証明書のインポート

5、最終確認

【自己署名証明書の類似記事】

OpenSSLでLAN内サーバーに自己署名証明書を作成する

【留意事項】

Windowsやブラウザーのバージョンおよびアップデート状況などにより、表示画面および機能または編集手順などが若干異なる場合がある。

1、SANテキストを作成

SSL証明書に含まれる情報として、コモンネームを含むサブジェクトとは別に「SAN」という拡張領域がある。「SAN」とは、Subject Alternative Nameの略称で、サブジェクトの別名である。これを使用すると、1つのSSL証明書で保護する追加のホスト名を指定できる。その内容は、証明書においてドメイン名やIPアドレスなどを記述する。

この「SAN」を使用するため、以下の簡単なテキストファイルを作成する。ファイル名は任意でいいが、ここでは[san.txt]とする。

SubjectAlternativeNameは、以下のようにDNSを設定する。使用するドメインおよびそのドメインに対するIPアドレスを設定する。この場合IPアドレスは固定する必要がある。また、赤文字のドメインおよびプライベートIPアドレスは自分の環境に合わせる

 subjectAltName=DNS:span.com,IP:192.168.1.100

IPアドレスを固定したくない場合、好ましくはないが以下のようにドメインのみでも機能してくれる。また、赤文字のドメインは自分のドメインに合わせる

 subjectAltName=DNS:span.com
2、SSL証明書の作成

OpenSSLを使用して、前記で作成した「SAN」を書き込んだSSL証明書を作成する。まだOpenSSLをインストールしていない場合は以下を参照する。

OpenSSLでLAN内サーバーに自己署名証明書を作成する

ここからはOpenSSLをインストール済みで、Windowsの環境設定が完了しているものとして記していく。

▶作成手順

SSL証明書を取得するには、最初にサーバーで秘密鍵を生成、次に公開鍵を含むCSRファイルを生成、最後にCRTファイルを送信して証明書を取得する必要がある。

コマンドを実行する前に、SSL証明書を入れるフォルダーを作成しておく。このページでは以下のようにCのカレントに作成した。

[C:\SSL]

CUIは何でもいいが、このページではコマンドプロンプトを管理者権限で起動して以下のコマンドを実行する。

赤文字の部分は自分の設定やドメインなどに変更する必要がある。また、このページでは必要最小限を入力しているため、入力していない項目も必要な場合は入力する。


事前に作成したSSL証明書を入れるフォルダー内に入る

 >CD C:\SSL

.keyファイルを作成する。

 >openssl genrsa -out server.key

.csrファイルを作成する。

 
>openssl req -new -key server.key -out server.csr -subj "/CN=span.com"
 
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) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa-Ken
Locality Name (eg, city) []:Kawasaki-City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Span Co.. td.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:span.com
Email Address []:
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
 

上記.csrファイル入力内容の翻訳を以下に記す。

>openssl req -new -key server.key -out server.csr
 
組み込まれる情報の入力を求められます証明書要求に追加します。
入力しようとしているのは、識別名または DN と呼ばれるものです。
かなりの数のフィールドがありますが、空白のままにすることができます一部のフィールドにはデフォルト値があります。
「.」を入力すると、フィールドは空白のままになります。
-----
国名(2文字コード)[AU]:jp
都道府県名(フルネーム)[都道府県]:神奈川県
地域名(都市など)[]:川崎市
組織名 (会社名など) [Internet Widgits Pty Ltd]:Span Co.. td.
組織単位名 (セクションなど) []:
一般名 (例: サーバーの FQDN またはあなたの名前) []:span.com
電子メールアドレス []:
 
次の「追加」属性を入力してください証明書リクエストと一緒に送信されます。
チャレンジパスワード []:
オプションの会社名 []:

.crtファイルを作成する。(365=1年間有効、3650=10年間有効)

>openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -extfile san.txt

3、SSL証明書の設定

ここでは、OpenSSLで作成した証明書を設定する。ApacheやNginxでSSL証明書を設定する場合、一般的には以下の2つのファイルを設定するが、設定順は以下のとおりである。

SSL証明書ファイル(.crtファイル)

秘密鍵ファイル(.keyファイル)

Apacheでは、一般的にhttpd.confやapache2.confファイルまたはhttpd-vhosts.conf内で、以下のように設定する。また、赤文字の部分はご自分の設定やドメインなどに変更する必要がある。

また、相対パスでエラーになる場合は、以下のように絶対パスで設定する必要がある。

 
<VirtualHost *:443>
ServerName span.com
----------
SSLEngine on
SSLCertificateFile C:/SSL/server.crt
SSLCertificateKeyFile C:/SSL/server.key
----------
</VirtualHost>
 

Nginxでは、一般的にNginxの設定ファイルであるnginx.conf内で設定する。

 
server {
listen 443 ssl;
server_name span.com;
ssl_certificate C:/SSL/server.crt;
ssl_certificate_key C:/SSL/server.key;
----------
}
 

設定が完了したら、ApacheまたはNginxを再起動する。これをよく忘れる!

4、SSL証明書のインポート

この項目はページの中核を担うところで、作成したSSL証明書をWindowsシステムへインポート(読み込む)し、証明書を信頼させてセキュリティによる警告を出さないようにする方法を以下の手順で行う。ブラウザーなら何でもいいが、このページではシェア率トップの「Chrome」を使用することにする。

▶ 手順 1

Chromeを起動して右上の縦の三点リーダーから[設定]をクリックし、表示されたダイアログで以下の設定をする。

左ペインの [プライバシーとセキュリティ] をクリックする。

右ペインの [セキュリティ] をクリックする。

150_ssl_right-14画像

▶ 手順 2

表示されたセキュリティダイアログの[証明書の管理]をクリックする。

150_ssl_right-16画像

▶ 手順 3

証明書のダイアログでは以下を設定する。

上部メニュー内の [信頼されたルート証明機関] のタブをクリックする。

[インポート] ボタンをクリックする。

150_ssl_right-18画像

▶ 手順 4

証明書のインポート ウィザードの開始が表示されるため、内容を確認して[次へ]ボタンをクリックして次へ進む。

150_ssl_right-20画像

▶ 手順 5

インポートする証明書ファイルを設定するため[参照]ボタンをクリックする。

150_ssl_right-22画像

▶ 手順 6

ここでインポートするファイルは、前記で作成した公開鍵と証明書情報を含む「.crt」ファイルである。

証明書を格納したフォルダーをたどり、このページでは[server.crt] を選択する。

選択したら [開く] ボタンをクリックする。

150_ssl_right-24画像

▶ 手順 7

証明書ストアのダイアログでは、証明書の保管を指定する方法を設定する。このページでは以下の方法で設定する。

[証明書をすべて次のストアに設定する]を選択する。

[信頼されたルート証明機関]を選択する。

[次へ]ボタンをクリックする。

150_ssl_right-26画像

▶ 手順 8

証明書のインポート ウィザードの完了が表示されるため[完了]ボタンをクリックする。

150_ssl_right-28画像

▶ 手順 9

セキュリティ警告のダイアログが表示されるため、内容を確認して[はい]ボタンをクリックする。

150_ssl_right-30画像

▶ 手順10

作成したSSL証明書のインポートが完了したため、以下の操作ですべてを閉じる。

「正しくインポートされました」のダイアログの[OK] ボタンをクリックする。

[閉じる] ボタンをクリックし、証明書のインポート ウィザードをすべて閉じる

150_ssl_right-32画像
5、最終確認

ここまで、OpenSSLでLAN内のサーバーに設定したSSL証明書を、セキュリティ警告が出ないように作成する方法を記してきた。このページでSSL証明書を設定したブラウザー(このページではChrome)が開いていたら一旦閉じて再起動し、証明書を設定したドメインのページを表示する。

アドレスバーに「150_ssl_right-画像保護されていない通信|https」と表示されていた警告がなくなり、以下画像のように証明書が有効である鍵マークがしっかりと表示されている。鍵マークをクリックすると、設定した内容や有効期限などが表示される。

OpenSSLで作成したSSL証明書は自己署名証明書である。自己署名証明書は、証明書の発行者が自己で署名した証明書であり、CAによって署名された証明書と比べて、信頼性が低いとされている。ただし、自己署名証明書でも立派なデジタル証明書であり、前記した「自己署名証明書を利用する際の注意点」に留意すれば、データの暗号化や通信のセキュリティを確保することができる。

150_ssl_right-34画像
amazon
amazon
page_top