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アプレットのスクロールビューが左右連動効果を実現

推薦する

MySQL (5.6 以下) の JSON 解析の詳細な例

MySQL(5.6以下)はjsonを解析します #json 解析関数 DELIMITER $$ `j...

JavaScript 配列メソッド - 体系的な概要と詳細な説明

目次一般的な配列メソッド配列要素の追加と削除配列ヘッダーの操作配列の末尾を操作する任意の場所に追加ま...

Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順

序文プロジェクト要件: Dockeridea に Docker プラグインをインストールし、Dock...

CentOS 6.x のインストール時に発生するエラー「ディスク sda に BIOS RAID メタデータが含まれています」の解決方法

今日、CentOS6.2 をインストールしていたところ、ハード ドライブの検出段階を通過できませんで...

JS ES6 非同期ソリューション

目次最初にコールバック関数を使用するes6 非同期処理モデルこの非同期モデルに合わせたAPI: pr...

表 td 画像水平および垂直中央揃えコード

HTMLコード:コードをコピーコードは次のとおりです。 <td align="cen...

ローカルアイデアアクティベーションサーバーの構築に関する詳細なチュートリアル

序文ブロガーはアイデアIDEを使用しています。アイデア公式が最近サードパーティのアクティベーションサ...

特定の MySQL テーブルの完全データと増分データをメッセージ キューに同期する - ソリューション

目次1. 当初の需要2. 解決策3. 運河の導入と設置運河の仕組み建築インストール4. 検証1. 当...

mysql 10進データ型変換の実装

最近、次のデータ型のデータベースに遭遇しました:decimal(14,4)発生した問題は次のとおりで...

Vueはシンプルなデータ双方向バインディングを実装します

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。初心者...

JavaScript の継承についてどれくらい知っていますか?

目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...

Dockerイメージをパッケージ化し、リモートサーバーにプッシュしてk8sにデプロイする方法

目次1. Dockerファイル2. pom 構成3. イメージプッシュ4. k8s デプロイメント前...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

Vue ミックスインの使い方の詳しい説明

目次Vue ミックスインの使用ミックスインでのデータアクセスミックスイン/index.jsホーム.v...

Vue3 AST パーサー - ソースコード分析

目次1. AST抽象構文木を生成する2. ASTのルートノードを作成する3. 子ノードの解析4. テ...