Windows Apache 環境で SSL 証明書を展開して、Web サイトを https 対応にする方法

Windows Apache 環境で SSL 証明書を展開して、Web サイトを https 対応にする方法

SSL 証明書の使用についてはここでは説明しません。SSL 証明書を導入する必要がある友人は、すでに理解しているはずです。早速本題に入りましょう。

Apache をインストールします。Apache をダウンロードしてインストールするときは、SSL バージョンの Apache インストーラをダウンロードしてください。

最初のステップは、もちろん証明書を取得することです。

Tencent Cloud に申請しましたが、わずか数分で完了しました。

ドメイン名の検証に合格したら、証明書をダウンロードするだけです

image.png

1_root_bundle.crt (証明書チェーン ファイル)

2_www.domain.com_cert.crt (証明書ファイル)

3_www.domain.com.key (秘密鍵ファイル)

環境に証明書を配置します。apache/cert に配置しました。cert フォルダは自分で作成しました。

2番目のステップは、サーバー環境の構成を変更することです

まず、[LoadModule ssl_module modules/mod_ssl.so] という行を見つけます。先頭に # がある場合は削除します。ない場合は変更する必要がないので、そのままにしておきます。

2番目: [Include conf/extra/httpd-ssl.conf] の行を見つけます。先頭に # がある場合は削除します。ない場合は変更する必要がないので、そのままにしておきます。

#次の3行は証明書ファイルの設定です。パスと対応するファイル名を変更するように注意してください。混乱しないようにしてください。

SSL証明書ファイル "/phpStudy/PHPTutorial/Apache/cert/2_tktx.nichousha.cc.crt"

SSL証明書キーファイル "/phpStudy/PHPTutorial/Apache/cert/3_tktx.nichousha.cc.key"

SSL証明書チェーンファイル "/phpStudy/PHPTutorial/Apache/cert/1_root_bundle.crt"

cart+f 次の名前を1つずつ検索して置き換えます

もう一つは、サイト ディレクトリを変更することです。今日、私はこの小さな落とし穴に足を踏み入れました。

ファイル内の多くのサイトパスが間違っているため、修正する必要があります

SSLオプション +標準環境変数

</ファイル一致>

<ディレクトリ "C:\phpStudy\WWW">

たとえば、WWW のパスは \phpStudy\PHPTutorial\WWW です。私は PHPSTUDY の新しいバージョンを使用しているので、パスは \phpStudy\PHPTutorial\WWW です。間違った場所を検索して、一括で変更するだけです。

ステップ3 301リダイレクトを設定する

.htaccessを使用します

image.png

リライトベース /

書き換え条件 %{SERVER_PORT} !^443$

書き換えルール ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

この段落を追加するだけです。

image.png

全体のプロセスは比較的簡単です。ご質問がある場合は、メッセージを残してください。コメントはメールで送信されますので、すぐに返信します。

以下は他のネットユーザーからのコメントです

1. 準備

1) Apache + SSL を設定する前に、次の操作を行う必要があります。

Apache をインストールします。Apache をダウンロードしてインストールするときは、SSL バージョンの Apache インストーラをダウンロードしてください。

ssl に必要なファイルは次の場所にあります。

[Apacheインストールディレクトリ]/modules/ mod_ssl.so

[Apache インストールディレクトリ]/bin/ openssl.exe、libeay32.dll、ssleay32.dll、openssl.cnf

[Apacheインストールディレクトリ]/conf/ openssl.cnf

SSL 証明書を作成します (一部の統合環境には openssl が付属していますが、bin ディレクトリには openssl.cnf がありません。conf の下の openssl.cnf を bin ディレクトリにコピーする必要がありますが、全体的な原則は同じです)

2) Windows 環境では、まず OpenSSL 環境変数を設定する必要があります。

コマンドset OPENSSL_CONF=..\conf\openssl.cnfを実行します。

CMD を開き、Apache インストール ディレクトリの下の bin ディレクトリに移動します。

ステップ1 : コマンドopenssl genrsa 1024 >server.keyを実行します。

注: RSA キー ペアのデフォルトの長さは 1024 で、これは 2 の整数乗です。キーの長さが長いほど、セキュリティが高くなります。

キー server.key が生成されたら、手順 2 に進みます。

ステップ 2: 署名されていない server.csr を生成し、bin ディレクトリでコマンドの実行を続行します。

openssl req -new -config openssl.cnf -key server.key >server.csr

注意: -config .openssl.cnf パラメータを追加しないと、「.../ssl/openssl.cnf から構成情報をロードできません」というメッセージが表示されることがよくあります。

次に、一連のパラメータを入力するよう求められます。

国名 (2 文字コード) [AU]:CN ISO 国コード (2 文字のみサポートされます)

州または県名(フルネーム)[Some-State]:ZJ Province

地域名(例:市) []:HZ 市

組織名(例:会社):

組織単位名(例:セクション) []:yiban 組織単位名

共通名(例:あなたの名前)[]: localhost:80 証明書を申請するためのドメイン名(httpd.confのserverNameと一致させることが推奨されます)

メールアドレス []:[email protected] 管理者メールアドレス

証明書リクエストとともに送信される次の「追加」属性を入力してください。チャレンジパスワード []: 1234Exchange キー

オプションの会社名 []:CD

注意: 共通名は httpd.conf の serverName と一致している必要があります。一致していないと Apache が起動しない可能性があります。

(Apache を起動すると、エラー メッセージが表示されます: server RSA certificate CommonName (CN) `Kedou' はサーバー名と一致しません。) 署名された server.csr 構成を完了します。

ステップ3:

サーバー証明書ファイル server.crt に署名します。

bin/ディレクトリでコマンドを実行します。

openssl req -x509 -days 5000 -config openssl.cnf -key server.key -in server.csr >server.crt

注: これは、手順 1 と 2 のキーと証明書要求を使用して、証明書 server.crt を生成します。-days パラメータは、証明書の有効期間を日数で示します。x509 は、生成された証明書が X.509 証明書であることを示します。

ステップ4:

bin ディレクトリで、server.crt、server.csr、server.key ファイルを見つけて、それらを Apache conf ディレクトリに切り取ります。

ステップ5:

httpd.conf を設定します。Apache conf\extra ディレクトリの httpd_ssl.conf ファイルは SSL 設定に関するもので、httpd.conf の一部です。

httpd.conf に次の 2 行を追加します (ファイルの前にコメント "#" 記号がある場合は削除します)。

LoadModule ssl_module モジュール/mod_ssl.so

conf/extra/httpd-ssl.conf をインクルードする

ステップ6:

(注:同じ部分は省略)

conf\extraディレクトリで、httpd_ssl.confを編集します。

443を聴く

SSLPassPhraseDialog組み込み

SSLセッションキャッシュ "dbm:c:/Apache24/logs/ssl_scache"

#SSLセッションキャッシュ "shmcb:c:/Apache24/logs/ssl_scache(512000)"

(上記2種類はご自身で監視してください。どちらかがサーバーの起動に失敗する場合は、もう一方に切り替える必要があります)

SSLセッションキャッシュタイムアウト 300

<仮想ホスト www.my.com:443>
#ドキュメントルート "D:/wamp/bin/apache/apache2.4.9/htdocs"
ドキュメントルート「C:/wamp/www/hxq」
サーバー名 www.my.com:443
サーバーエイリアスmy.com:443
サーバー管理者 [email protected]
ディレクトリインデックス index.html index.htm index.php default.php app.php u.php
エラーログ ログ/example_error.log
カスタムログログ/example_access.log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
SSLエンジンオン
SSL証明書ファイル "C:/wamp/bin/apache/apache2.4.9/conf/server.crt"
SSL証明書キーファイル "C:/wamp/bin/apache/apache2.4.9/conf/server.key"
#SSL証明書チェーンファイル "C:/upupw/Apache2/conf/1_root_bundle.crt"
<FilesMatch "\.(shtml|phtml|php)$">
SSLオプション +標準環境変数
</ファイル一致>
ブラウザマッチ「MSIE [2-5]」\
nokeepalive ssl-unclean-shutdown \
ダウングレード-1.0 強制レスポンス-1.0
<ディレクトリ "C:/wamp/www/hxq">
オプション FollowSymLinks
すべて上書きを許可
許可、拒否の命令
すべて許可
</ディレクトリ>
</仮想ホスト>

最も可能性の高い問題は、http_ssl.conf 内のログのパスの問題です。物理パスに従って設定することをお勧めします。

ステップ7:

Apache をデバッグして実行します (Apache 用)。 xampp、wampserver、phpstudy などの統合環境で Apache サーバーを起動すると、サーバーでどのような問題が発生したかがわからない場合があります。Apache/logs のログを確認することをお勧めします。これに基づいて、cmd コマンドラインを使用して bin ディレクトリで httpd コマンドを実行します。エラーが報告されない場合は、サーバーが正常に動作していることを意味します。それ以外の場合は、プロンプトに従って変更を加えます。

2. テスト実行

apahce サービスを再起動し、https://www.my.com/ にアクセスします。完了です。

===========エラー集約が発生しました==========

1. 「c:/apache/conf/extra/httpd-ssl.conf の 80 行目に構文エラーがあります:ErrorLog には 1 つの引数が必要です。エラー ログのファイル名です」または「c:/apache/conf/extra/httpd-ssl.conf の 99 行目に構文エラーがあります:SSLCertificateFile には 1 つの引数が必要です。SSL サーバー証明書ファイル ('/path/to/file' -PEM または DER でエンコード) です」

解決策: ファイルパスに二重引用符を追加する

2、「C:/apache/conf/extra/httpd-ssl.conf:SSLSessionCache の 76 行目に構文エラーがあります: 'shmcb' セッション キャッシュはサポートされていません (既知の名前: )。適切な socache モジュール (mod_socache_shmcb?) をロードする必要がある可能性があります。」

解決:

httpd.confを開き、

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so を見つける

前のコメントを削除します。

<<:  MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

>>:  WeChatアプレットのスクロールビューが左右連動効果を実現

推薦する

Element UI をインストールして vue3.0 でベクター グラフィックスを使用する方法

ここでは、v3 のインストールと使用にのみ焦点を当てます。v2 について学びたい場合は、公式 Web...

Dockerでプロジェクトを実行する方法

1. プロジェクトwarが保存されているディレクトリを入力しますDockerfileを編集する vi...

HTML 選択ボックスのプレースホルダーの作成に関する問題

テキスト入力でプレースホルダーを使用していますが、問題なく動作します。しかし、選択ボックスにはプレー...

Linux ユーザー状態とカーネル状態間の通信方法の詳細な説明

CPU 権限の制限により、Linux ユーザー状態とカーネル状態間の通信は、プロセス間通信を使用した...

ホームページのデザインはウェブデザイナーのレベルを最もよく反映する

私がこれまで携わってきた多くのプロジェクトでは、基本的に避けられない悪循環がありました。それは、ホー...

Vue3 はメッセージコンポーネントの例を実装します

目次コンポーネント設計最終的なコンポーネントAPIの定義コンポーネント構造の定義テンプレートとスタイ...

表のセル間の境界線/区切り線を非表示にする方法

上の境界線のみを表示する <table frame=above>下の境界線のみを表示する...

CentOS7 に MySQL をオフラインでインストールする詳細なチュートリアル

1. 元のmariadbを削除します。削除しないとmysqlをインストールできません。 mariad...

Vue3 の父子値転送に関する簡単な説明

目次父から息子へ: 1. 親コンポーネントのサブコンポーネントタグに、サブコンポーネントに渡されるデ...

React コンポーネントのコンストラクタとスーパーの知識ポイントのまとめ

1. Reactでクラス宣言する際のヒント 上記のように、Child クラスは class キーワー...

Vue グローバルメソッドを設定する 2 つの方法

目次1. はじめに2. 最初の方法3. 2番目の方法要約する1. はじめにVue プロジェクトの開発...

ccs3に基づくタイムライン実装方法

Web プロジェクトでは、タイムライン コントロールをよく使用します。この記事では、項目ごとに展開で...

Linux に nodejs 環境とパス構成をインストールするための詳細な手順

Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...

ミニプログラムは、カスタムのマルチレベル単一選択と複数選択を実装します

この記事では、参考のために、ミニプログラムでカスタムのマルチレベル単一選択および複数選択機能を実装す...