serverの最近のブログ記事

Let's EncryptでSSL(server)

| | コメント(0)

CentOS7.3

# yum install epel-release
はいってる

# cd /home/うさこの
# git clone https://github.com/certbot/certbot
# cd certbot/
# ./certbot-auto

ずらずらーと。途中でyおしつつ。

■複数ドメインで設定
# ./certbot-auto certonly --webroot -w /ディレクトリ -d ドメイン -w /ディレクトリ -d ドメイン -w /ディレクトリ -d ドメイン -w /ディレクトリ -d ドメイン -w /ディレクトリ -d ドメイン -w /ディレクトリ -d ドメイン -w /ディレクトリ -d ドメイン
Apacheにいれるかnginxに入れるか聞かれるのでApache
連絡先メール
Agreeする


ssl.confでそれぞれの設定に以下を追加
SSLCertificateFile /はいったとこ/ドメイン/cert.pem
SSLCertificateKeyFile /はいったとこ/ドメイン/privkey.pem
Include /はいったとこ/options-ssl-apache.conf
SSLCertificateChainFile/はいったとこ/ドメイン/chain.pem


Apacheを再起動して完了。


■自動更新のテスト
# /home/うさこの/certbot/certbot-auto renew --post-hook "sudo service httpd restart"

# emacs /etc/cron.d/letsencrypt
毎日午前2時にrenewしたいので以下を入力

******
SHELL=/bin/sh

# m h dom mon dow user command
00 2 * * * root /home/lulu/certbot/certbot-auto renew --post-hook "sudo service httpd restart"
******
# crontab /etc/cron.d/letsencrypt

Chromeで次のアドレスを打つ。
chrome://net-internals/#events

他のタブで見たページのヘッダ情報が確認できる。

Filter MailでSPAMなどの登録をしている場合、Mail Forwardingで転送先を設定するとSPAMメールも律儀に転送されてしまう。
その場合、転送はProcmail Mail Filterで設定する。

Procmail Mail FilterのManually edit configurationを選択し、テキストで編集
スパム判定の設定など記述されているので、その最後に

:0c
! sample@sample.com,sample2@sample.com

等追加。
メールはカンマ区切りで複数設定可能。
:0cを:0にすると、メールボックスに残さずに転送。


参考ページ:http://www.ram.ne.jp/support/spamassassin.html

うちで管理してたドメインを、クライアントさんが別に移したいと言ったので作業。メモ。

ドメイン管理(Manage Dmain)のところでドメイン詳細表示。
以下の2点。

transfer2013.png

1)は移管ロック。Unlockへ

2)はAuthorization Code
これをクリックしたらコードがメールで送られてくる。
このコードを先方に教えてあげること。

3)先方の手続きが済んだら、移管のurlが送られてくる。
ここにアカウント名とAuthorization Codeを入力したら完了。

transfer2.png

移管がすんだらgoDaddyからメールが送られてくる。


ちなみに(?)新しい同じレジストラを利用する場合は、もっと簡単。
アカウント変更って感じになる。
多分、更新ひと月前は移管できないんだけど、レジストラが同じだったら大丈夫そうな感じ。

■PECLをインストール
$pecl
でずらっといろいろ表示された。
ので、入ってるっぽい。
入って無かったら、
http://pecl.php.net/

http://svn.php.net/viewvc/pecl/
に色んなバージョン有り

■libssh2を入れる

$cd /usr/local/src
$wget http://www.libssh2.org/download/libssh2-1.4.0.tar.gz
$tar xvzf libssh2-1.4.0.tar.gz
$cd libssh2-1.4.0
$./configure
version: 1.4.0
Host type: i686-pc-linux-gnu
Install prefix: /usr/local
Compiler: gcc
Compiler flags: -g -O2
Library types: Shared=yes, Static=yes
Crypto library: openssl: yes (AES-CTR: no) libgcrypt: no
Debug build: no
Path to sshd: /usr/sbin/sshd (only for self-tests)
libz compression: yes
$make
$make install

■ssh2をインストール
$pecl install channel://pecl.php.net/ssh2-0.11.0

途中でlibssh2.soのありかを聞かれる
libssh2インストール時に表示されたので、それを入力
インストール完成

■php.iniに追加記述
$emacs /etc/php.ini
以下追加
extension=ssh2.so

■秘密鍵の作成

環境:Apache 2.0+open_ssl

1)SSHでサーバーにログインしてsuに
cd /etc/httpd/conf/

2)httpd.confのあるディレクトリに移動し、下記のようにディレクトリを作成
mkdir ssl.crt ssl.csr ssl.key
(※ディレクトリ名は既存であれば上書きされるので、被らないようにすること。年に一度なので年を入れると良いかな)

3)ランダム変数ファイル作成
/usr/bin/openssl md5 * > 適当なファアル名.dat
opensslは人によって場所が違うのでwhich opensslで調べると良い。


4)秘密鍵作成
/usr/bin/openssl genrsa -rand 適当なファアル名.dat -des3 2048 > 秘密鍵ファイル名.pem
※ここでパスフレーズを入力するけど、めちゃくちゃ大事で絶対に忘れちゃ、ダメ!!

5)csr作成
/usr/bin/openssl req -new -key 秘密鍵ファイル名.pem -out ssl.csr/SSL.csr

csrはサーバ会社に送る。
去年までよりやっぱり長くなってるねぇ。(当たり前だけど)


■証明書のインストール 証明書と中間証明書がきたので、サーバに設置


証明書と中間証明書を
/etc/httpd/conf/ssl.crt/
に両方入れる。

■記述
/etc/httpd/conf.d/ssl.confに
SSLCertificateFile /etc/httpd/conf/ssl.crt/証明書.crt
SSLCACertificateFile /etc/httpd/conf/ssl.crt/中間証明書.ca-bundle
SSLCertificateKeyFile/etc/httpd/conf/ssl.key/秘密鍵.pem
の3点セットを書く(マルチドメインなどで何カ所かあるよ!

※〜confってファイルは全部読まれちゃうので、古い物を名前つけておいとく時は、末尾を.confにしちゃだめ!!




■Apacheの再起動
/etc/rc.d/init.d/httpd restart
ここで、パスフレーズを聞いてくるので、入力したら立ち上がる。
いちいち面倒なので、webminの サーバ>Apacheサーバ>グローバル設定>SSLのオプション
でFixed passwordにパスフレーズを入力
これで毎回の入力が省けます。


■SSLの確認方法(これとこれがペアで合ってる?など) openssl req -in ssl.csr -text のModulesの箇所と openssl rsa -in sslkey.pem -text (パスフレーズが必要) のModulesの箇所が同じだったらOK!!

アプリケーションディレクトリの
/tools/run-periodic-tasks

サーバに接続して
crontab -l
って打つと、cronの一覧がでてくる。

crontab -eとすると、編集
viエディタなので、aと打って 編集モードに

0,15,30,45 * * * * cd /mtアプリケーションディレクトリ; ./tools/run-periodic-tasks
とすると15分おき。

*/15 * * * * cd /mtアプリケーションディレクトリ; ./tools/run-periodic-tasks
こういう書き方も出来る

30 * * * * cd /mtアプリケーションディレクトリ; ./tools/run-periodic-tasks
で1時間おき(毎時30分)

escキーで編集モード終了
ZZで保存終了。


◆smrshの設定

/etc/smrsh の中のデータを実行できる。
シンボリックリンクを張ると便利。
実行できるファイルを教えてあげる感じ。

$ln -s /***/***/sample/sample.php sample.php

$ll
demo.php -> /***/***/sample/sample.php

てな

◆/etc/aliasesの設定
/etc/aliasesで、エイリアスを設定

demo: "|/***/***/sample/sample.php"
を追加

newaliases

を実行

Fire FoxでもSafariでもwebminへの接続でSSLエラーがでた。(ある日突然!)
****
210.166.209.214:16612 への接続中にエラーが発生しました。
SSL received a record that exceeded the maximum permissible length.
(エラーコード: ssl_error_rx_record_too_long)
*****

httpでwebminにこっそり入って、
webmin > webmin設定 >SSL 暗号化
で、Net::SSLeay が無いと言われます。
ボタン押してwebmin上でインストールできます。

※httpでのアクセスしたら、パスワードとかwebminのポートとか変えておきましょう。

前まで使えてたのになんでだろね??
(Perlのバージョンアップをしたんだっけ?)

ルートディレクトリに.htaccessを置いて、以下のように記述

#################################################
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteRule ^$ http://www.sample.com/i/index.html [R]

RewriteCond %{HTTP_USER_AGENT} SoftBank
RewriteRule ^$ http://www.sample.com/s/index.html [R]

RewriteCond %{HTTP_USER_AGENT} UP.Browser
RewriteRule ^$ http://www.sample.com/ez/index.html [R]
#################################################

mod_rewriteがonになってないと使えません。

サイトのディレクトリ構成は
/.htaccess
/index.html--PCトップ
/i/index.html i-mode用トップ
/s/index.html ソフトバンク用トップ
/ez/index.html ezweb(au)用トップ

とします。