メンテ時に社内Wifi IPのみサイトアクセス許可する
備忘録です。
サイトメンテナンスする際の手順をまとめています。
手順
maintenance.html
DocumentRoot に maintenance.html を配置
.htaccess にてアクセス制限
1 | ErrorDocument 503 /maintenance.html |
以上です。
備忘録です。
サイトメンテナンスする際の手順をまとめています。
DocumentRoot に maintenance.html を配置
1 | ErrorDocument 503 /maintenance.html |
以上です。
.htaccess に設定した通りに動作しない、そもそも読み込んでいないように見える場合の対策です。
http だと mod_rewrite でリダイレクトするけど、 https だとしない、とか
ありがちな設定ミスパターンは以下基本的なことを確認して解決できます。
/etc/httpd/conf/httpd.conf
等設定ファイル内で以下の記述が必要です。
利用頻度の多い mod_rewrite を利用するには以下が必要です。
まずは上記の確認です。
Apache の場合、大抵 modles ディレクトリ以下に格納されてます。
1 | $ ls -al /etc/httpd/modules/mod_rewrite.so |
Apache 設定ファイル/etc/httpd/conf/httpd.conf
や /etc/httpd/conf.d/*.conf
で以下を設定している。
※環境によっては /etc/httpd/conf/httpd.conf
に設定ファイルを置いてない場合もあるので
あくまで一般的な例とします。
モジュール読み込み設定は大抵、
以下のように
以下例では「/var/www/html」ディレクトリ以下では 配置した .htaccess を優先して設定されることになります。
1 | <Directory "/var/www/html"> |
万が一 mod_rewrite.so モジュールが存在しない場合は Apache の再コンパイルが必要になります。
1 | $ sudo su - |
以上です。
ベリトランスモジュールバージョンアップに際して
SHA256で発行したSSL証明書が必須となりました。
テスト環境でベリトランスモジュールバージョンアップ試験を行う際に
SSL証明書導入する必要が生じました。
本番環境と同じ有料SSLを導入するまでとはいかずとも
近しい状況を構築する必要があったので無料SSL証明書を発行し導入しました。
上記の手順をまとめましたので以下に記載します。
AWS Marketplace: CentOS 6 (x86_64) - with Updates HVM を利用しています。
事前準備として、SSLインストール対象サーバで
CSRを生成しておきます。
SHA256 対応のCSR生成方法について以下ご参考ください。
登録E-mail宛に verification codeが送付されます。
startSSL側で指定するメールアドレスで受信可能な状態にする必要があります。
ec2インスタンスのメール受信設定は以下記事が参考になりました。ありがとうございます。
上記記事中の注意点として
インスタンス作成直後にyum update
分にはいいですが
時にAWSでyum update
をするとkernel panicを起こすことがあります。
pythonをyumでなくソースから独自に入れ直したり、色々してたせいか…原因は追い切れていませんが、経年運用したインスタンスについては yum update は控えたいと思います。
/var/log/maillog を 常に tailしてログ確認。
受信可能なメールアドレスが既にあれば aliases で向け先変える。
postmaster@(domain) → root@(domain)
メールボックスで Permission denied で
受信メールを保存できない場合は以下強引にメールディレクトリを変更する。
メール受信による認証がクリア後、SSL証明書注文へ進みます。
情報入力後、 (domain).zip がダウンロードされる。
※ 今回は WebServer が Apache なので ApacheServer を参照します。
解凍した zipファイルの ApacheServer 内の以下2ファイルを任意のディレクトリにアップしましょう。
今回アップ先ディレクトリは server.key 等のあるパス (/etc/httpd/conf/ssl.csr/) にします。
SSL証明書のインストールとは
Apacheの設定ファイルとして指定ディレクティブで読み込ませる
ことです。
主な設定は以下です。
| Item | Value | Explain |
| ———————– | —————————————– |
| SSLCertificateChainFile | /etc/httpd/conf/ssl.csr/1_root_bundle.crt | 中間証明書 |
| SSLCertificateFile | /etc/httpd/conf/ssl.csr/2_(domain).crt | SSLサーバ証明書 |
| SSLCertificateKeyFile | /etc/httpd/conf/ssl.csr/server.key | SSLサーバ証明書とペアになる秘密鍵 |
以下URLで各WebServerとopensslバージョンにより最適な設定方法を示唆いただけます。
https://ssl-config.mozilla.org/
/etc/httpd/conf.d/ssl.conf
1 | LoadModule ssl_module modules/mod_ssl.so |
パフォーマンスチューニングを一切していません。
あくまで SSL証明書インストールを対象としていますのでご注意ください。
構文エラーが発生している場合は対象箇所が表示されますのでチェックし直してください。
但し、構文エラーがないからと言ってApache再読み込み時にエラーが発生しないとは限らないので
万が一の為、即元に戻せるようなコマンドを作っておくと良いでしょう。
例えば
ssl.conf を ssl.conf.bk にリネームして Apacheの設定ファイルとして見ないようにさせるなど。
Chromeでアクセスしました。
以下サイトで診断できます。
QUALYS SSL LABS
「A」が取れました!
ちなみに
常に https通信で問題ないサイトであれば以下のように設定すると
1 | <VirtualHost *:443> |
「A+」取得できました!
常時httpsはセキュアではありますがサイトの仕様次第なところもあるので状況によりけりです。
以上
※特にドメイン登録者を明確に指定する必要がなければ、「手順」へ進んでください。
企業認証周りが必要な場合は
事前にWHOIS(フーイズ)でドメイン登録者情報を確認しておくとスムーズです。
検索ワードにドメイン入力して検索すると登録者情報を確認できます。
// rootユーザへ切り替え | |
# sudo su - | |
Password:(rootユーザのパスワード入力) | |
// CSR用ディレクトリ作成 | |
# mkdir /etc/httpd/conf/ssl.csr/ | |
// CSR用ディレクトリに移動します。 | |
# cd /etc/httpd/conf/ssl.csr | |
// キーペア(秘密鍵)の作成(2048bit, SHA256の秘密鍵) | |
# openssl genrsa -des3 -out server.key 2048 -sha256 | |
Generating RSA private key, 2048 bit long modulus | |
..........................+++ | |
......................+++ | |
e is 65537 (0x10001) | |
Enter pass phrase:(パスワード入力) | |
Verifying - Enter pass phrase:(パスワード入力) | |
// キーペア(秘密鍵)を元にしたCSRの作成 | |
# openssl req -new -sha256 -key server.key -out server.csr | |
Enter pass phrase for sample.key:(パスワード入力) | |
You are about to be asked to enter information that will be incorporated | |
into your certificate request. | |
What you are about to enter is what is called a Distinguished Name or a DN. | |
There are quite a few fields but you can leave some blank | |
For some fields there will be a default value, | |
If you enter '.', the field will be left blank. | |
----- | |
Country Name (2 letter code) [AU]:JP (←カントリーコード入力) | |
State or Province Name (full name) [Some-State]:Tokyo (←Stateコード 日本の場合、都道府県入力) | |
Locality Name (eg, city) []:Shibuya-ku (←Stateコード 日本の場合、市区郡入力) | |
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxxxx ,Ltd. (←会社名) | |
Organizational Unit Name (eg, section) []:marketing (←自由です) | |
Common Name (e.g. server FQDN or YOUR name) []:sample.jp (←今回SSL証明書を導入したいドメイン) | |
Email Address []: (←何も入力しない) | |
Please enter the following 'extra' attributes | |
to be sent with your certificate request | |
A challenge password []: (←何も入力しない) | |
An optional company name []: (←何も入力しない) | |
// csrファイルが生成されていることを確認 | |
# ls -al | |
-rw-r--r-- 1 root root 1045 2月 26 14:31 server.csr | |
-rw-r--r-- 1 root root 1751 2月 26 14:21 server.key | |
// server.key パスワード解除 WebServer再起動毎にパスワードを尋ねられる為 | |
# openssl rsa -in server.key -out server.key | |
// 念のため中身を見てみる | |
# less server.csr | |
-----BEGIN CERTIFICATE REQUEST----- | |
......... | |
-----END CERTIFICATE REQUEST----- | |
// 以上 |
// rootユーザへ切り替え | |
# sudo su - | |
Password:(rootユーザのパスワード入力) | |
// CSR用ディレクトリ作成 | |
# mkdir /etc/httpd/conf/ssl.csr/ | |
// CSR用ディレクトリに移動します。 | |
# cd /etc/httpd/conf/ssl.csr | |
// キーペア(秘密鍵)の作成(2048bit, SHA256の秘密鍵) | |
# openssl genrsa -des3 -out server.key 2048 -sha256 | |
Generating RSA private key, 2048 bit long modulus | |
..........................+++ | |
......................+++ | |
e is 65537 (0x10001) | |
Enter pass phrase:(パスワード入力) | |
Verifying - Enter pass phrase:(パスワード入力) | |
// キーペア(秘密鍵)を元にしたCSRの作成 | |
# openssl req -new -sha256 -key server.key -out server.csr | |
Enter pass phrase for sample.key:(パスワード入力) | |
You are about to be asked to enter information that will be incorporated | |
into your certificate request. | |
What you are about to enter is what is called a Distinguished Name or a DN. | |
There are quite a few fields but you can leave some blank | |
For some fields there will be a default value, | |
If you enter '.', the field will be left blank. | |
----- | |
Country Name (2 letter code) [AU]:JP (←カントリーコード入力) | |
State or Province Name (full name) [Some-State]:Tokyo (←Stateコード 日本の場合、都道府県入力) | |
Locality Name (eg, city) []:Shibuya-ku (←Stateコード 日本の場合、市区郡入力) | |
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxxxx ,Ltd. (←会社名) | |
Organizational Unit Name (eg, section) []:marketing (←自由です) | |
Common Name (e.g. server FQDN or YOUR name) []:sample.jp (←今回SSL証明書を導入したいドメイン) | |
Email Address []: (←何も入力しない) | |
Please enter the following 'extra' attributes | |
to be sent with your certificate request | |
A challenge password []: (←何も入力しない) | |
An optional company name []: (←何も入力しない) | |
// csrファイルが生成されていることを確認 | |
# ls -al | |
-rw-r--r-- 1 root root 1045 2月 26 14:31 server.csr | |
-rw-r--r-- 1 root root 1751 2月 26 14:21 server.key | |
// server.key パスワード解除 WebServer再起動毎にパスワードを尋ねられる為 | |
# openssl rsa -in server.key -out server.key | |
// 念のため中身を見てみる | |
# less server.csr | |
-----BEGIN CERTIFICATE REQUEST----- | |
......... | |
-----END CERTIFICATE REQUEST----- | |
// 以上 |