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

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

ただいまの
回答率

88.19%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,070

j-suzuki

score 40

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で見れています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2018/03/10 08:16

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

    キャンセル

  • CHERRY

    2018/03/11 10:03

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

    キャンセル

  • CHERRY

    2018/03/11 10:05

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

    キャンセル

回答 2

checkベストアンサー

+1

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 の設定がわからないので、どう直せばよいかの指摘は難しいです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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/10 00:07 編集

    回答ありがとうございます。
    そうです。250のほうのWebサイトについてはSSL化されています。

    ミドルウェアは150はapache2.4で、250の方はapache2.2です

    ドメイン名は別々です

    キャンセル

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

  • ただいまの回答率 88.19%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る