質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

2回答

1589閲覧

SSLのバーチャルホストの設定の書き方

j-suzuki

総合スコア50

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2018/03/09 13:17

編集2018/03/12 15:32

2台のサーバを1グローバルアドレスで公開しています。
現在httpではバーチャルホストの設定で飛ばすことができています。
192.168.11.250 CentOS6.9
192.168.11.150 CentOS7
250→150にしています。

SSLでhttpsの形でWebを公開したいのですが、confの書き方がわかりません。
どのような形で書けばいいでしょうか?
またSSL証明書は150でも250でも取らないといけないでしょうか?

ご教授ください。

<追記20180310:00:09>
192.168.11.250 apache2.2.15-60
192.168.11.150 apache2.4.6-67
です
<追記20180310:12:58>
<VirtualHost *:80>
ServerName my domain
KeepAlive Off
ProxyPass / http://192.168.11.150/
</VirtualHost>
で飛ばしています

<追記:20180310:22:09>

CerbotでSSL証明書を250で取得しようとしたところ、以下のエラー出ます。

/usr/local/certbot/certbot-auto certonly --webroot -w /var/www/exmple_com -m e-mail -d exmple.com --agree-tos

IMPORTANT NOTES:

  • The following errors were reported by the server:

    Domain: exmple.com
    Type: unauthorized
    Detail: Invalid response from
    http://exmple.com/.well-known/acme-challenge/Vcs2F_uyZmqT5RWpS2qpcPFOS2vFh9A3ZSSIQvZoLt8:
    "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

    <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p"

    To fix these errors, please make sure that your domain name was
    entered correctly and the DNS A/AAAA record(s) for that domain
    contain(s) the right IP address.

exmple.comのところは自分のドメインを入れています。
どうしてでしょうか?httpではアクセスできているのですが。

<追記:20180310:23:13>
ありがとうございます、証明書取れました。
しかし、sslのconfを作ってもhttpsでアクセスすると、「安全な接続ではありません(Firefox)」と出てアクセス出来ません。
試しにローカルではなく、タブレットで4G回線でアクセスしてみましたが、アクセス出来ませんでした。
何か設定を間違っているのでしょうか?
教えて頂いたのをコピーして、ドメインを追記したのですが。

<追記:20180310:23:45>
ssl_error_logでは
[Sat Mar 10 23:11:05 2018] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sat Mar 10 23:11:05 2018] [warn] RSA server certificate CommonName (CN) `exmple.orz.hm' does NOT match server name!?
と出ています。exmple.orz.hmは250のサーバのドメインになっています。
ブラウザでは。
イメージ説明

htmlの内容はまだ文字だけしか入れてないので、問題ないかと思います。

<追記:20180311:00:03>
SSLで外部からはアクセスできるようになりました。ありがとうございます。
ところが、内部からだと「サーバが見つかりません」と表示されます。

どうしたらいいでしょうか?
それと250のhttpdを再起動した際に、
httpd を起動中: [Sun Mar 11 00:00:33 2018] [warn] module ssl_module is already loaded, skipping
と出るのですが、問題ないようなのでほっといているのですが、たぶん443が2回設定されているとのことだと思うのですが。

<追記:20180311:00:30>
ローカル用のDNSが立っています。ので、DNSで対応してみます。
それからhttpdの再起動のエラーの件ですが、httpd.confとSSL.confに同じのが書かれていたので、httpd.confのをコメントアウトしておきました。

<追記:20180311:00:55>
DNSに書き込みをしてみました。httpではアクセスできるのに、httpsではアクセス出来ません。
なんでしょう?

<追記:20180311:14:30>
DNSはローカル用のものに記述しました。
SALエラーですと
[Sun Feb 11 03:42:18 2018] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sun Feb 11 03:42:18 2018] [warn] RSA server certificate CommonName (CN) `example.com’does NOT match server name!?
このときのexmple.comは250で利用しているドメインでした。

<追記:20180312:16:30>
まだ未確認ですが、DNSで引っ張れない件がわかりました。
たぶんDNSに登録するアドレスが間違っています。
150のサーバにアクセスするから150とDNSにとうろくしましたが、250の間違いだと気づきました。まだ仕事中なので、帰宅したら確認してみます。

<追記:20180313:00:30>
やっぱりDNSに書きこんでいるIPアドレスが違いました。
現在はちゃんとローカルでも、外からでもSSLで見れています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/03/09 23:16

現在のhttp で、250 から 150 には、どのように設定して、転送しているのでしょうか?
CHERRY

2018/03/11 01:03

DNSに書き込んだというのは、どこの DNS でしょうか? LAN 側に DNS サーバーを作られましたか?
CHERRY

2018/03/11 01:05

「httpsではアクセス出来ません。」を詳しく説明していただけないでしょうか? Apache のログには、どのように出ているのでしょうか?
guest

回答2

0

ベストアンサー

Apache のバージョンも SNI に対応していますので、最低限の設定としては、192.168.11.250 に SSL 証明書を入れて、SSLEngine / SSLProtocol / SSLCertificateFile / SSLCertificateKeyFile の各項目をを追加したら SSL で接続できると思います。

ローカルLAN内であれば、192.168.11.250 から 192.168.11.150 の接続は、SSL じゃなくても大丈夫でしょう。

こんな感じでしょうか?

<VirtualHost *:443> ServerName example.net KeepAlive Off ProxyPass / http://192.168.11.150/ # SSL SSLEngine on SSLProtocol All -SSLv3 -SSLv2 SSLCertificateFile "ssl/example.net/fullchain.pem" SSLCertificateKeyFile "ssl/example.net/privkey.pem" </VirtualHost>

(2018.03.10 22:54 追記)

Certbot の エラーの件

VirtualHost の設定で、ProxyPass / http://192.168.11.150/ で、全てを 192.168.11.150 のサーバに転送しているのが、原因ですね。
DocumentRoot のディレクトリを追加して、/.well-known/ を Proxy の転送から除外する設定を追加しましょう。

<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/exmple_com KeepAlive Off ProxyRequests Off ProxyPass /.well-known/ ! ProxyPass / http://192.168.11.150/ </VirtualHost>

(追記)

httpsでアクセスすると、「安全な接続ではありません(Firefox)」

いくつか原因があると思うますが、現在書いていただいている内容だけでは、判断が難しいです。

Webブラウザで「証明書を表示」したら証明書のエラーは出ていますか?

Web サーバーの エラーログ や SSL ログには、SSL のエラーは何か出ていますか?

ページの html ソースを確認した場合、CSS や JavaScript や 画像のリンクが、http://example.com/〜 のように「http:」で始まっていたりしないでしょうか?
そうであれば、「https://example.com/〜」で始めるようにするか 「//example.com/〜」のように httpやhttps を省略してください。


(2018.03.11 00:20 追記)

ところが、内部からだと「サーバが見つかりません」と表示されます。

LAN内に立てた公開用Webサーバーに対して、LAN側のPCからアクセスする際は、サーバーのプライベートアドレスではなく公開用のグローバルアドレスを使用してサーバーへアクセスさせる必要があります。

しかし、ルーターが、「NATループバック」や「ヘアピンNAT」と呼ばれる機能に対応していない場合は、LAN側から WAN側 IP アドレスにアクセスした際に NAT 変換(WAN側 -> LAN側)ができないため、アクセスできなくなります。

対応方法としては、以下のいずれかでしょうか。 1が、簡単だと思います。

1.hosts ファイルに ドメイン名と LAN 側 IP アドレスの対応を設定する。

hosts ファイルに以下を記入する。

192.168.11.250 example.com 192.168.11.250 example.net

2.インターネット上のプロキシを経由してアクセスする。
3.「NATループバック」や「ヘアピンNAT」に対応したルーターに交換する。
4.LAN 側に DNS を構築して、ドメイン名と LAN 側 IP アドレスの対応を設定する。

[warn] module ssl_module is already loaded, skipping

httpd.conf や conf.module.d/.conf や conf.d/.conf の中に LoadModule が記載されていると思いますが、LoadModule ssl_module の行が複数行ないでしょうか?


(2018.03.11 23:00 追記)

<追記:20180311:14:30> DNSはローカル用のものに記述しました。 SALエラーですと

に対する回答を追記

[Sun Feb 11 03:42:18 2018] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

自己署名証明書をつかっているという warning だと思いますが、Apache の設定に「自己署名証明書」を記載している部分はありますか?

[Sun Feb 11 03:42:18 2018] [warn] RSA server certificate CommonName (CN) `example.com’does NOT match server name!?

Apache 設定の サーバー名(ServerName)と SSL 証明書の CommonName が、一致しないという warning です。

具体的な Apache の設定がわからないので、どう直せばよいかの指摘は難しいです。

投稿2018/03/10 08:50

編集2018/03/11 14:12
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

グローバルIPアドレスで(1)192.168.11.250から(2)192.168.11.150へPorxy転送して
2つのWebサービス(1)(2)を現在公開されていて、それぞれをSSL化したいってことですね。
(1)と(2)の公開で利用されているドメイン名が別ならサーバ証明書は2つ必要です。
ワイルドカードタイプであれば1つの証明書でOkです。

confの書き方は、利用されているWEBサーバのミドルウエアが何か?不明ですので
記載できません。

投稿2018/03/09 13:58

nagaetty

総合スコア1106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

j-suzuki

2018/03/09 15:09 編集

回答ありがとうございます。 そうです。250のほうのWebサイトについてはSSL化されています。 ミドルウェアは150はapache2.4で、250の方はapache2.2です ドメイン名は別々です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問