私は今回、「さくらインターネット」で「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を配置する時などにも使えそうです。
勉強になりました。