MENU

Django運用中にSSL認証ファイルを配置したい

私は今回、「さくらインターネット」で「JPRS」のサーバ証明書を契約しました。
JPRSの場合は、以下のパスでネット上に公開しなければいけません。

「http://申請したFQDN/.well-known/pki-validation/ランダムな文字列.txt」


でも、既にPythonのDjangoやRuby on Railsで運用してしまっていたら、

どうやってこのパスに配置するの!
と困ります。

私自身、今回困り、どのようにすればいいのか気になったため、調べました。

目次

事前準備と構成

・認証ファイルをダウンロード
(さくらインターネットで申請していれば、会員ページでDL可能です。)

今回の環境は、Pythonのフレームワーク「Django」で既に運用しているシステムをSSLにする想定。

実際に作業してみる

# 認証ファイルの配置

仮想サーバにアクセスして、「/var/www/html」を開きます。
この中に、「/var/www/html/.well-known/pki-validation」
という形でディレクトリを作成してあげます。
「/pki-validation」の中にはダウンロードした「認証ファイル」を配置します。

認証ファイルの準備は完了です。

# confファイルの記述を変更

「/etc/httpd/conf.d/django.conf」を開き、確認。

いろいろサーバによって設定はあると思いますが、
「ServerName」=ドメイン名
「<Directory /var/www/vops/xxxxx/>」=ルートディレクトリ
とわかります。

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
        SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
        SSLCertificateChainFile /etc/httpd/conf/ssl.crt/internal.crt

        ServerName xxxxxx-xxxxx.com

        Alias /staticfiles /var/www/vops/xxxxxx

        <Directory /var/www/vops/xxxxx/>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
        <Directory /var/www/vops/xxxxx//staticfiles>
            Require all granted
        </Directory>
</VirtualHost>
<VirtualHost *:80>

        ServerName xxxxxx-xxxxx.com

        Alias /staticfiles /var/www/vops/xxxxx/staticfiles/

        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>

ルートドキュメントとは別に個別にパスを指定するには、
「Alias」を使います。


「http://xxxxxx-xxxxx.com/.well-known/pki-validation/ランダムな文字列.txt」というパスでアクセスをさせる必要があるので、


<VirtualHost *:443> と <VirtualHost *:80>
それぞれに以下の記述を追記します。

Alias /.well-known/pki-validation /var/www/html/.well-known/pki-validation/



最終的には以下のようになります。

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
        SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
        SSLCertificateChainFile /etc/httpd/conf/ssl.crt/internal.crt

        ServerName xxxxxx-xxxxx.com

        Alias /staticfiles /var/www/vops/xxxxxx

        Alias /.well-known/pki-validation /var/www/html/.well-known/pki-validation/

        <Directory /var/www/vops/xxxxx/>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
        <Directory /var/www/vops/xxxxx//staticfiles>
            Require all granted
        </Directory>
</VirtualHost>
<VirtualHost *:80>

        ServerName xxxxxx-xxxxx.com

        Alias /staticfiles /var/www/vops/xxxxx/staticfiles/

        Alias /.well-known/pki-validation /var/www/html/.well-known/pki-validation/

        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>

最後に、Apachを再起動。

service httpd restart





アプリ運用中、ルートディレクトリ以外のパスにhtmlを配置する時などにも使えそうです。
勉強になりました。

よかったらシェアしてね!

この記事を書いた人

目次
閉じる