Windows で HTTPS アクセスを実現するための SSL 構成 (証明書の生成を含む)
まず、なぜ https を実装する必要があるのかを説明する必要があります。
HTTPの正式名称はHypertext Transfer Protocolで、クライアントはサーバー上のハイパーテキストコンテンツを取得します。ハイパーテキスト コンテンツは主に HTML です。クライアントは HTML コンテンツを取得すると、仕様に従ってそれを解析して表示できます。したがって、HTTPは主に「コンテンツのリクエストと取得」を担当します。問題はこの部分にあります。 モニタリング、ハイジャック、ブロック などの行為は、簡単に Web サイトの漏洩につながる可能性があります。ログイン パスワードなどの一部の重要なパラメータは、クライアント上で MD5 によって暗号化されます。しかし、インターネット上で運ばれる機密情報は単なるパスワードではありません。内容も機密情報です。現在、Baidu、Google、Github などの Web サイトでは、サイト全体で https が有効になっており、HTTPS はリクエストを暗号化してユーザーの安全性を高めています。ユーザーの利益を保護するだけでなく、自身のトラフィックのハイジャックを防ぐことで自分自身の利益も保護できます。したがって、私の考えでは、いつか HTTPS がネットワーク全体に普及するでしょう。
本題に入りましょう。
注: このチュートリアルは、すでに WNMP 環境を構成し、マルチサイトを実装するように Virtualhost を構成している学生に適しています。まだ設定していない場合は、前回の記事を参照して設定してください。
HTTPSを実装するには、まず管理機関に証明書を申請する必要がありますが、今回は練習用なのでOpensslを使って自分で証明書を生成しました。まず、証明書を生成する Openssl ソフトウェアを使用する必要があります。
手順:
1. OpenSSL をインストールします
ダウンロードアドレス: http://slproweb.com/products/Win32OpenSSL.html (システムに応じて、ダウンロードしてインストールする 32 ビットまたは 64 ビットのバージョンを選択します)。
ダウンロードが完了したら、インストールします。 私はC:wnmpOpenSSL-Win64フォルダにインストールしました。
2. ActivePerl をインストールします (このソフトウェアの目的は pl ファイルを解析することです。一部のシステムでは、ActivePerl をインストールしなくてもこのチュートリアルの機能を実現できます。このソフトウェアのインストールの目的は、Perl を学習することです)。
ダウンロードアドレス: http://www.activestate.com/activeperl/downloads/ (システムに応じて、ダウンロードしてインストールする win32 または win64 バージョンを選択します)。
3. 環境変数を設定します
環境変数に環境変数を追加する
変数名:OPENSSL_HOME 変数値:C:wnmpOpenSSL-Win64bin(変数値はopensslのインストール場所)
パス変数の最後に%OPENSSL_HOME%;
を追加します。4. 証明書を生成します
(1) まずnginxのインストールディレクトリに証明書を格納するsslフォルダーを作成します。たとえば、私のファイルディレクトリはC:wnmpnginxsslです
管理者としてコマンドラインモードに入り、sslフォルダーに入ります。 コマンドは: cd c:/wnmp/nginx/ssl
(2)秘密鍵を作成します
以下に示すように、コマンドラインでコマンドを実行します: openssl genrsa -des3 -out lee.key 1024 (lee ファイル名はカスタマイズ可能):
パスワードを入力後、確認のため再度パスワードを入力してください。このパスワードは後で必要になるため、覚えておいてください。
(3) CSR証明書を作成します
コマンドラインでコマンドを実行します: openssl req -new -key lee.key -out lee.csr (キーファイルは生成されたばかりのファイル、lee はカスタムファイル名です)
上の図に示すように、上記のコマンドを実行した後、情報を入力する必要があります。 入力する最も重要な情報は共通名です。ここで入力するドメイン名は、https を使用してアクセスするドメイン名です。
上記の手順が完了すると、sslフォルダーに2つのファイルが表示されます:
(4)パスワードを解除します。
SSLサポートでNginxをロードし、上記の秘密キーを使用する場合は、必要なパスワードを削除してください。削除しないと、nginxの起動時にパスワードを入力する必要があります。
lee.keyをコピーして、lee.key.orgに名前を変更します
このコマンドラインを使用することもできますし、マウスを使用して操作することもできますcopy lee.key lee.key.org
パスワードを削除し、コマンドラインで次のコマンドを実行します: openssl rsa -in lee.key.org -out lee.key (lee はカスタムファイル名)
下の図に示すように、このコマンドでは設定したばかりのパスワードを入力する必要があります。
(5) crt証明書を生成します
コマンドラインで次のコマンドを実行します: openssl x509 -req -days 365 -in lee.csr -signkey lee.key -out lee.crt (lee はカスタムファイル名です)
証明書が生成されると、sslフォルダーに以下の合計4つのファイルが生成されます。使用する必要があるのは、lee.crtとlee.keyです。
5. nginx.conf ファイルを変更します
nginx.conf ファイルは次の場所にあります: C:wnmpnginxconf
ファイル内で次のコードの場所を見つけて変更します。
に変更されました:
重启nginx。
在浏览器中,访问 https://www.lee.com。发现出现证书认证,并能够成功访问。(www.lee.com为生成证书时,Common Name输入的域名)
(执行此步骤时,需要配置好Virtual Host,并且在www.lee.com开放目录中添加了index.php默认入口访问文件。)
上面的https被红色划线是因为我们使用的是自己生成的证书,此证书不受浏览器信任,如果想使其变为绿色,则需要向证书管理机构进行申请。
6. 添加重定向,自动跳转使用https。
在nginx.conf中virtual host中如下代码位置添加一行代码:
listen 80<span style="color: #008000;">;</span> server_name www.lee.com<span style="color: #008000;">;</span> #modify by lee 20160907<span style="color: #000000;"> for https Redirect -s rewrite ^(.*) https://$server_name$</span>1 permanent<span style="color: #008000;">;</span> #modify by lee 20160907 for https Redirect -e
重启nginx。
访问www.lee.com,会发现浏览器自动跳转到https://www.lee.com,并能够成功访问。
至此,https访问配置成功完成。
如有不明之处,欢迎留言,如有错误敬请指正。
参考: http://blog.csdn.net/ztclx2010/article/details/6896336