[黑客人生] Jedi.org 的 SSL

之前我機器上的 SMTPS / POP3S / FTPS 都是用 ca.csie.org 這個 Root CA (最高層認證中心) 所簽署的 SSL/TLS 憑證,不過畢竟我的機器完全沒有採用 csie.org 的網域名稱,這樣多少有點怪怪的(笑);再加上今年據說是所謂的「網路反盜版元年」,做壞事得小心點,所以我決定把 TatooineApache 伺服器加上 mod_SSL ,改採 HTTPS

因此我昨天還按照依瑪貓那篇有名的【如何製作 SSL X.509 憑證】,自己做了 Jedi.org 的 Root CA ,然後一併簽發了一堆憑證,給 Jedi.org 上面的 SMTPS / POP3S / FTPS 使用;也順便簽了一份憑證,給 Shrimplet 上面的 BlackMoon FTPD 用。這份 Root CA 憑證在此: jedi-org-ca.crt

以下記載一些技術細節,幾乎都來自 rafan 的指導:

首先,在 FreeBSD 上要把 Apache 加上 mod_SSL ,其實用 portupgrade 來做很簡單:

cd /usr/ports/
make fetchindex
pkgdb -F
portsupgrade -o www/apache13-modssl apache

像這樣子,就會升級之前用 ports 安裝的 Apache ,並且改用 apache13-modssl 這個 ports 來取代之。這樣裝完後,在 /usr/local/etc/apache/ 會多出一個 httpd.conf-dist ,參照這個設定檔,把有關 SSL 的部分合併回原來的 httpd.conf ,然後再重跑 Apache 即可:

apachectl startssl

PureFTPd 的話要修改 /usr/local/etc/pure-ftpd.conf ,主要是要啟用這一個選項:

TLS		2
這表示一定要用 SSL/TLS 纔接受連線。設定好了之後還要把簽好的憑證附在原有的 /usr/local/etc/ssl/private/pure-ftpd.pem 之後,然後重跑 pure-ftpd

/usr/local/etc/rc.d/pure-ftpd.sh restart

我的 SMTPS 採用 postfix ,要修改 /usr/local/etc/postfix/main.cf

# SSL/TLS
smtpd_tls_key_file = /usr/local/etc/ssl/mail.jedi.org.key
smtpd_tls_cert_file = $smtpd_tls_key_file
smtpd_tls_CAfile = /usr/local/etc/ssl/jedi.org.ca.crt
smtpd_use_tls = yes
tls_random_exchange_name = /var/run/prng_exch
tls_random_source = dev:/dev/urandom
tls_daemon_random_source = dev:/dev/urandom
POP3S 的設定在 /usr/local/etc/dovecot.conf
# Disable SSL/TLS support.
ssl_disable = no
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert_file = /usr/local/etc/ssl/mail.jedi.org.key
ssl_key_file = /usr/local/etc/ssl/mail.jedi.org.key
當然,也一樣要把簽好的憑證的部分附在原有的 /usr/local/etc/ssl/mail.jedi.org.key 之後,然後重跑 postfixdovecot

postfix reload
/usr/local/etc/rc.d/dovecot.sh restart

最後還要回來處理一下憑證無效的警告,把 jedi-org-ca.crt 匯入到各應用程式用戶端,指定其為 Trusted Root CA (IE 翻譯成「受信任的根憑證授權」) ,之後就不會再跑出說憑證無效了。當然我也可以學 gslin 長輩那樣,花一點錢去買一份憑證來用,不過我又沒有在做大事業,想一想實在不太有此必要。

jedi.org: