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

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

ただいまの
回答率

87.49%

後から追加したドメインをletsencrypt証明書を使ってssl化したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 793

score 86

現在、1つのサーバーで1つのサービスを運用しており、そのサービスのドメインに対してLetsEncryptでSSL化を行なっています。

このサーバーにもう1つアプリ(運用中サービスの管理者用アプリ)を追加することになり、新規でドメインを取得後、新しいアプリのドメインもSSL化する方法を教えていただきたいです。

【現状の構成】
環境:さくらのVPS、CentOS7、Apache
・運用中のサービス名/ドメイン:example/example.domain.com
ディレクトリ:/var/www/html/example
・追加するサービス名/ドメイン:example2/example2.example.domain.com
ディレクトリ:/var/www/html/example2

サービスはいずれもrailsで作成されたものです。

VirtualHostの設定で下記①~③のようにファイルを作成&各ドメインの設定を記述し、apache再起動で挙動を確認しました。

運用中のドメインは問題なくブラウザで挙動を確認できましたが、追加予定のドメインは「この接続ではプライバシーが保護されません」と表示されました。
(無効の証明書は運用中ドメインのものです。)
イメージ説明

・VirtualHostの設定
①/etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>
        ServerName example.domain.com
        DocumentRoot /var/www/html/example/public/
        ServerAdmin info@example.jp
        ErrorLog /var/log/httpd/example.domain.com.error.log
        CustomLog /var/log/httpd/example.domain.com.access.log combined env=!no_log
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =example.domain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
        ServerName example2.example.domain.com
        DocumentRoot /var/www/html/example2/
        ServerAdmin info@minton.jp
        ErrorLog /var/log/httpd/example2.example.domain.com.error.log
        TransferLog /var/log/httpd/example2.example.domain.com.access.log
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =example2.example.domain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

②/etc/httpd/conf/httpd-le-ssl.conf

<IfModule mod_ssl.c>
  <VirtualHost *:443>

    ServerAdmin root@example.domain.com
    DocumentRoot /var/www/html/example/public/
    ServerName example.domain.com

    RailsEnv production

    SSLCertificateFile /etc/letsencrypt/live/example.domain.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.domain.com-/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateChainFile /etc/letsencrypt/live/example.domain.com/chain.pem

    RewriteRule ^/(.*)$ http://0.0.0.0:3000%{REQUEST_URI} [P]

    <Directory /var/www/html/example/public/>
      #Directoryも同じく、Railsのpublicが置かれている場所のパスを記述

      AllowOverride all
      Require all granted
      Options -MultiViews
    </Directory>
  </VirtualHost>
#  <VirtualHost *:443>

#    ServerAdmin root@example2.example.domain.com
#    DocumentRoot /var/www/html/example2/public/
#    ServerName example2.example.domain.com

#    RailsEnv production

#    SSLCertificateFile /etc/letsencrypt/live/example.domain.com/cert.pem
#    SSLCertificateKeyFile /etc/letsencrypt/live/example.domain.com/privkey.pem

#    Include /etc/letsencrypt/options-ssl-apache.conf
#   SSLCertificateChainFile /etc/letsencrypt/live/example.domain.com/chain.pem

#    RewriteRule ^/(.*)$ http://0.0.0.0:3000%{REQUEST_URI} [P]

#    <Directory /var/www/html/example2/public/>
      #Directoryも同じく、Railsのpublicが置かれている場所のパスを記述

#      AllowOverride all
#      Require all granted
#      Options -MultiViews
#    </Directory>
#  </VirtualHost>
</IfModule>

③/etc/httpd/conf.d/passenger.conf

LoadModule passenger_module /usr/local/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/passenger-6.0.4/buildout/apache2/mod_passenger.so

<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/passenger-6.0.4
  PassengerDefaultRuby /usr/local/rbenv/versions/2.5.1/bin/ruby
</IfModule>

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ServerAdmin root@example.domain.com
    DocumentRoot /var/www/html/example/public/
    ServerName example.domain.com

    RailsEnv production

    SSLCertificateFile /etc/letsencrypt/live/example.domain.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.domain.com/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateChainFile /etc/letsencrypt/live/example.domain.com/chain.pem

    #RewriteRule ^/(.*)$ http://0.0.0.0:3000%{REQUEST_URI} [P]

    <Directory /var/www/html/example/public/>
      #Directoryも同じく、Railsのpublicが置かれている場所のパスを記述

      AllowOverride all
      Require all granted
      Options -MultiViews
    </Directory>
  </VirtualHost>
#  <VirtualHost *:443>
#    ServerAdmin root@example2.example.domain.com
#    DocumentRoot /var/www/html/example2/public/
#    ServerName example2.example.domain.com

#    RailsEnv production

#    SSLCertificateFile /etc/letsencrypt/live/example.domain.com/cert.pem
#    SSLCertificateKeyFile /etc/letsencrypt/live/example.domain.com/privkey.pem

#    Include /etc/letsencrypt/options-ssl-apache.conf
#    SSLCertificateChainFile /etc/letsencrypt/live/example.domain.com/chain.pem

    #RewriteRule ^/(.*)$ http://0.0.0.0:3000%{REQUEST_URI} [P]

#    <Directory /var/www/html/example2/public/>
      #Directoryも同じく、Railsのpublicが置かれている場所のパスを記述

#      AllowOverride all
#      Require all granted
#      Options -MultiViews
#    </Directory>
#  </VirtualHost>
</IfModule>

追加予定ドメイン用の証明書を取得して上記②、③の証明書関連のパスを変更すれば追加ドメインもssl化されるのかなと考えています。

追加ドメイン用のSSL証明書発行方法と有効にするための設定方法について教えていただけますと大変助かります。

よろしくお願いいたします

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

証明書を追加するより、「example.domain.comexample2.example.domain.comの両者に対して有効な証明書を作成してセットする」という方が手っ取り早いかと思います。

Let's Encryptでは、このような「複数ドメインをカバーする証明書」の発行も可能です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/08/19 20:24

    早速ご回答いただきありがとうございます!

    >Let's Encryptでは、このような「複数ドメインをカバーする証明書」の発行も可能です。  
    こちら少し調べてみたのですが下記リンク先のように必要なドメイン分指定してcertbotで取得すればいいのでしょうか?(他の記事にはcertbot-autoコマンドで!というような記事もありどちらで行えばいいかがわかっておりません。。)
    https://www.yoheim.net/blog.php?q=20180401

    また証明書の新規取得になると思うので、confファイルに記述するSSL関連のパスは新しい証明書のパスをそれぞれのドメインの欄に記述するという認識でよろしいでしょうか?

    質問ばかりで恐れ入りますが、追加でご確認いただけますと幸いです。

    キャンセル

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

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

関連した質問

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