OpenSSLの自己署名証明書を警告が出ないように作成する
OpenSSLは、暗号化や復号化、デジタル署名、公開鍵証明書の生成や検証、ランダムなデータ生成など、さまざまな暗号技術を提供する。これにより、Webサーバーとクライアント間の通信など、セキュアな通信を実現することができる。また、世界中の多くのWebサーバーで使用されており、多くのアプリケーションやデバイスで使用されることもある。
OpenSSLは、オープンソースソフトウエアで無料で使用でき、多くの開発者によってメンテナンスされている。
自己署名証明書は、LAN内での通信を暗号化し、ある程度のセキュリティを確保することができる。しかし、完全な個人情報保護のためには、ファイアウォールやVPNなどの他のセキュリティ対策と組み合わせる必要があり、証明書の管理も重要である。
【自己署名証明書を利用する際の注意点】
・ 信頼性の低い環境では使用しない : 記すほどでもないが、公的機関など信頼できる第三者によって発行された証明書を使用する方がより安全である。
・ 定期的な更新 : 証明書の有効期限を短くして、有効期限が切れる前に更新すること。
・ 中間者攻撃対策 : VPNなど、中間者攻撃を防ぐための対策を講じると安全性はより向上する。
OpenSSLで作成した自己署名証明書はCA(認証局)から得たものではないため、以下画像のようにブラウザー上ではセキュリティ警告が出てしまう。このまま自宅で使用するには問題ないと思うが、社内などで使用していると信ぴょう性の問題などが発生する可能性がある。
このページでは、OpenSSLでLAN内のサーバーに設定した自己署名証明書がセキュリティ警告が出ないように作成する方法を、画像を用いながら記すことにする。
------[ 目 次 ]------
【自己署名証明書の類似記事】
➡ OpenSSLでLAN内サーバーに自己署名証明書を作成する
【留意事項】
Windowsやブラウザーのバージョンおよびアップデート状況などにより、表示画面および機能または編集手順などが若干異なる場合がある。
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 |
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 |
ここでは、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を再起動する。これをよく忘れる!
この項目はページの中核を担うところで、作成したSSL証明書をWindowsシステムへインポート(読み込む)し、証明書を信頼させてセキュリティによる警告を出さないようにする方法を以下の手順で行う。
▶ 手順 1
Windowsにインストールされているデジタル証明書を管理や表示するための「certmgr.msc(証明書マネージャー)」を立ち上げる。
❶ [スタートボタン]をクリックし、[ファイル名を指定して実行する]をクリックする。
❷ 名前のフォーム内に[ certmgr.msc ]を入力する。
❸ 入力したら[OK]ボタンをクリックする。または[Enter]キーを押下する。
▶ 手順 2
証明書マネージャーが立ち上がったら、事前に作成した公開鍵と証明書情報を含む「.crt」ファイルをインポートする。
❶ 左ペインの[信頼されたルート証明機関]を右クリックする。
❷ 表示されたメニューの[すべてのタスク]をクリックする。
❸ さらに表示されたメニューの[インポート]をクリックする。
▶ 手順 3
証明書のインポート ウィザードの開始では、保存場所はそのままで[次へ]をクリックする。
▶ 手順 4
インポートする証明書ファイルでは、[参照]をクリックする。
▶ 手順 5
保存場所から証明書ファイルを選択する。
❶ 証明書ファイルをポイントすると背景がブルーになる。
❷ ファイル名に「.crtファイル(server.crt)」が表示されたら[開く]をクリックする。
▶ 手順 6
ファイル名に「.crtファイル(server.crt)」が表示されたら[次へ]をクリックする。
▶ 手順 7
「証明書をすべて次のストアに配置する」にチェックが入っているのを確認して[次へ]をクリックする。
▶ 手順 8
証明書のインポート ウィザードの完了に変わるため[完了]をクリックする。
▶ 手順 9
すると、証明書のインポート ウィザードのダイアログが表示され「正しくインポートされました。」と表示されるため[OK]をクリックしてすべてを終了する。
【参考】
システムによっては、ここで「セキュリティ警告」が表示される場合がある。もしも表示されたら内容を確認して[はい]ボタンをクリックする。
ここまで、OpenSSLでLAN内のサーバーに設定したSSL証明書を、セキュリティ警告が出ないように作成する方法を記してきた。このページでSSL証明書を設定した証明書マネージャーや、ブラウザなどがが開いていたらすべてを閉じてPCを再起動し、証明書を設定したドメインのページを表示する。
アドレスバーに「
保護されていない通信|https」と表示されていた警告がなくなり、以下画像のように証明書が有効である鍵マークがしっかりと表示されている。鍵マークをクリックすると、設定した内容や有効期限などが表示される。
OpenSSLで作成したSSL証明書は自己署名証明書である。自己署名証明書は、証明書の発行者が自己で署名した証明書であり、CAによって署名された証明書と比べて、信頼性が低いとされている。ただし、自己署名証明書でも立派なデジタル証明書であり、前記した「自己署名証明書を利用する際の注意点」に留意すれば、データの暗号化や通信のセキュリティを確保することができる。




