| by ip-domain-search.com |
IPドメインSEARCH | IPドメインLOOKUP | IPドメイン半自動 | IPドメイン来訪者ログ | WWWサーバへ渡す情報 |
ドメイン基礎講座 | 独自ドメインの取得 | 自社(宅)サーバの構築 | 複数ドメインの運用 | お問合せ・PROFEEL |
ここでは、SSLを利用した暗号化のhttps通信を行う為のWebサーバーの構築方法について解説します。 |
◎ https通信と従来のhttp通信との違い ◎ https通信に必要な事項を大きく分けると以下の3つに分れます。 ○1:SSLに必要な ソフトのインストール ○2:SSLに必要な SSL証明書の入手 ○3:SSLに必要な SSL証明書のApacheへの設定 |
○2:SSLに必要な SSL証明書の入手 | |||
WebサーバーをSSL対応にして、httpsで通信する為には SSL証明書が必要です。 SSL証明書は認証局が発行(有料)します。 認証局にSSL証明書(crtファイル)を発行して貰うためには、CSRファイルを準備する必要があります。 CSRファイルは、貴サーバー上でopensslのコマンドを使って秘密鍵の作成と一緒に作成します。
ROOTで、/etc/ssl ディレクトリへ移動(無ければ作成)して下さい。 # cd /etc/ssl opensslで秘密鍵とCSRファイルを生成しますが、 その前にパスフレーズ(パスワードの様なもの)を決めて、忘れない用にしておいて下さい。 秘密鍵を作成します。 (青字が変更部分) # openssl genrsa -aes256 2048 > domain-name.key ( パスフレーズの入力・再入力を求められます。) ( -aes256の部分は -des3他 でもOKです ) ( domain-name.keyの部分は 秘密鍵 の名前です。 任意の英数字でOKです。 ) アクセス権を変更します。 # chmod 400 domain-name.key 秘密鍵からCSRファイルを生成します。 # openssl req -new -key domain-name.key -out domain-name.csr -sha256 ( domain-name.csrの部分はCSRファイルの名前です。 任意の英数字でOKです。 ) ( CSRファイル作成時にはパスフレーズ以外に多くの大事な質問がありますので慎重に入力して下さい。サーバー証明書に書き込まれます。) Country Name (2 letter code) [**]: JP State or Province Name (full name) [***]: Hyogo # 都道府県(登記されている住所) Locality Name (eg, city) [***]: Kobe # 市or区(登記されている住所) Organization Name (eg, company) [***]: ooo Inc. # 会社名 又はwhoisの登録名 Organizational Unit Name (eg, section) [***]: # 部署名(省略可) Common Name (eg, your name or your server's hostname) [***]: www.(** your domain-name **) # SSL化するドメインのホスト名 Email Address []: # メールアドレス(省略可) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #(省略可) An optional company name []: #(省略可) (後述しますが、Webサーバーの再起動時に毎回求められるパスフレーズの入力をしなくても起動する様に、私はパスフレーズ付きの秘密鍵を生成しています。) # openssl rsa < domain-name.key > domain-name_withpass.key ( パスフレーズの入力を求められます。) 認証局は「SSL認証局」などのキーで検索して、お好みの認証局を選んで下さい。 SSL証明書には3種類(DV認証、OV認証、EV認証)あります。 ◎ DV認証 はドメイン名の使用権のみを認証します。 ◎ OV認証 はドメイン名の使用権の認証に加え、申請した組織の実在性を認証します。 ◎ EV認証 はドメイン名の使用権の認証に加え、申請した組織の実在性を登記簿謄本等や第三者機関のデータベース等により法的・物理的に組織の実在性を確認し認証します。 SSL証明書の発行申し込みに際し、申し込みが間違いでは無いかをメールで確認されます。 そのためにadmin@(your domain-name) のメールアドレスで受信出来るようにしておいて下さい。 そして、認証局サイトで確認メールの送信先として admin@(your domain-name) を選択して下さい。 (最近はメールでの確認ではなく、認証局指定のフォルダーを作製し、そのフォルダーに認証局指定のファイルをコピーする様に指示され、認証局からそのファイルの存在を確認するという確認方法も使われているようです。) 順番は前後するかも知れませんが、次頁で、CSRファイルを貼り付ける様に促されます。 次は認証局へのお支払いです。 認証局への支払いの確認が終われば、admin@(your domain-name) 宛にメールが届き、 SSL証明書(crtファイル)や中間証明書が送られて来ます。 (又はSSL証明書(crtファイル)や中間証明書の在るurlを教えてきます。) そのSSL証明書(crtファイル)や中間証明書をファイルにセーブして、他のファイルと同じフォルダー(/etc/ssl/)に保存して下さい。
これら5つのファイルはroot のみが読むことのできるディレクトリに置く必要がありますので、/etc/ssl の属性を 700 に変更しておきます。 |
○3:SSLに必要な SSL証明書のApacheへの設定 |
Apache22の場合で説明します。 Apache22の設定ファイル:httpd.confの内で # Secure (SSL/TLS) connections の次の行が #Include etc/apache22/extra/httpd-ssl.conf であれば Include etc/apache22/extra/httpd-ssl.conf とコメントを解除して下さい。 httpd-ssl.confを編集します。 vi /usr/local/etc/apache22/extra/httpd-ssl.conf 私は複数ドメインをSSL対応にしたので、httpd-ssl.conf中の Listen 443 の次の行に NameVirtualHost *:443 を追加しました。 次にhttpd-ssl.conf中の <VirtualHost _default_:443> ~ </VirtualHost> をコピーして <VirtualHost *:443> ~ </VirtualHost> に変更し、ドメイン毎に追加しています。 (元の <VirtualHost _default_:443> ~ </VirtualHost> はコメントアウトします) <VirtualHost *:443>の変更箇所 (青字が変更部分) <VirtualHost *:443> DocumentRoot "/home/****/public_html/data" ScriptAlias /cgi-bin/ "/home/****/public_html/cgi-bin/" ServerName www.(** your domain-name **):443 SSLCertificateFile "/etc/ssl/domain-name.crt" #SSLCertificateKeyFile "/etc/ssl/domain-name.key" (Webサーバーの再起動時に毎回パスフレーズの入力を求められます。再起動したまま放置していたら何時まで待ってもパスフレーズ入力画面のままでサーバーが起動しません。) SSLCertificateKeyFile "/etc/ssl/domain-name_withpass.key" (Webサーバーの再起動時に毎回求められるパスフレーズの入力をしなくても起動する様に、私は秘密鍵としてパスフレーズ付きの秘密鍵を設定しています。) SSLCertificateChainFile "/etc/ssl/中間証明書ファイル名" ServerAdmin admin@(** your domain-name **) ErrorLog "/var/log/httpd/ssl_error.log" TransferLog "/var/log/httpd/ssl_access.log" SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/home/****/public_html/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/var/log/httpd/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 以下の内容を保存しWebサーバーを再起動してください。 ブラウザに https://www.(** your domain-name **) と入力すると画面が表示されましたか? ブラウザのURL欄に https://www.(** your domain-name **) と表示されていますか? ブラウザのURL欄に 鍵のようなマークが表示されていますか? ブラウザ(CHROME)のURL欄の https://の前に「保護された通信」という文字が表示されていますか? 以上を確認できれば貴サイトのSSL(暗号化)は完了です。 |
◎ httpsサイトとhttpサイトの今後の方針とその設定 |
httpsサイトとhttpサイトの今後の方針は以下の3通りかと思われます。 (1)httpsサイトとhttpサイトは違う内容を表示する。 (2)httpsサイトとhttpサイトは同じ内容を表示しているが、おのおの独立して存在する。 (3)httpサイトへのアクセスは全てhttpsサイトへ導く。 (1)の場合は、 httpd-vhosts.confに書かれているhttpサイト用の情報と httpd-ssl.confに書かれているhttpsサイト用の情報とは別のフォルダーになります。 (例)httpd-vhosts.conf に書かれているhttpサイト用の情報 <VirtualHost *:80> ・ DocumentRoot /home/******/public_html/data ScriptAlias /cgi-bin/ "/home/******/public_html/cgi-bin/" ServerName www.(** your domain-name **) ・ </VirtualHost> (例)httpd-ssl.conf に書かれているのhttpsサイト用の情報 <VirtualHost *:443> ・ DocumentRoot "http用と別のdata用フォルダー" ScriptAlias /cgi-bin/ "http用と別のcgi-bin用フォルダー" ServerName www.(** your domain-name **):443 ・ </VirtualHost> ブラウザのURL欄はhttp://www.(** your domain-name **)とhttps://www.(** your domain-name **)となり内容は別の サイトが表示されます。 (2)の場合は、 httpd-vhosts.confに書かれているhttpサイト用の情報と httpd-ssl.confに書かれているhttpsサイト用の情報とは同じフォルダーになります。 httpd-vhosts.conf に書かれているhttpサイト用の情報 <VirtualHost *:80> ・ DocumentRoot /home/******/public_html/data ScriptAlias /cgi-bin/ "/home/******/public_html/cgi-bin/" ServerName www.(** your domain-name **) ・ </VirtualHost> httpd-ssl.conf に書かれているのhttpsサイト用の情報 <VirtualHost *:443> ・ DocumentRoot /home/******/public_html/data ScriptAlias /cgi-bin/ "/home/******/public_html/cgi-bin/" ServerName www.(** your domain-name **):443 ・ </VirtualHost> ブラウザのURL欄はhttp://www.(** your domain-name **)とhttps://www.(** your domain-name **)となり別サイトですが内容は同じものが表示されます。 (3)の場合は、(2)と同様ですが httpd-vhosts.confのhttpサイト用の情報に Redirect 301 / https://www.(** your domain-name **) の行を追加する事で簡単に実現できます。 もしくは、DocumentRootで指定したフォルダーに.htaccessファイルを置く事で実現できます。 (.htaccessファイルの書き方等はネットで検索して下さい。) httpd-ssl.confに書かれているhttpsサイト用の情報は(2)と同様です。 http://www.(** your domain-name **)へアクセスしても、https://www.(** your domain-name **)へアクセスしても、ブラウザのURL欄は常にhttps://www.(** your domain-name **)と表示されます。 (例)httpd-vhosts.conf に書かれているhttpサイト用の情報 <VirtualHost *:80> ・ DocumentRoot /home/******/public_html/data ScriptAlias /cgi-bin/ "/home/******/public_html/cgi-bin/" ServerName www.(** your domain-name **) ・ Redirect 301 / https://www.(** your domain-name **) # 301リダイレクトと呼ばれる方式です ・ </VirtualHost> (例)httpd-ssl.conf に書かれているのhttpsサイト用の情報 ( (2)と同じです。 ) <VirtualHost *:443> ・ DocumentRoot /home/******/public_html/data ScriptAlias /cgi-bin/ "/home/******/public_html/cgi-bin/" ServerName www.(** your domain-name **):443 ・ </VirtualHost> ( もし、http側を.htaccessファイルでリダイレクトさせる場合は、https側も同じフォルダーを使っていますので、混乱を避ける為に httpd-ssl.confに AccessFileName .htaccess_s の行を追加して、.htaccessファイルと区別しておく方が安全です。 ) |
誤字脱字があった場合はEメールでお知らせ下さいますようにお願い申し上げます。
Copyright(c) {{year}} ip-domain-search.com All rights reserved. |
IPドメインSEARCH | IPドメインLOOKUP | IPドメイン半自動 | IPドメイン来訪者ログ | WWWサーバへ渡す情報 |
ドメイン基礎講座 | 独自ドメインの取得 | 自社(宅)サーバの構築 | 複数ドメインの運用 | お問合せ・PROFEEL |