Jedi.org 的 SSL
之前我機器上的 SMTPS / POP3S / FTPS 都是用 ca.csie.org 這個 Root CA (最高層認證中心) 所簽署的 SSL/TLS 憑證,不過畢竟我的機器完全沒有採用 csie.org 的網域名稱,這樣多少有點怪怪的(笑);再加上今年據說是所謂的「網路反盜版元年」,做壞事得小心點,所以我決定把 Tatooine 的 Apache 伺服器加上 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/TLSPOP3S 的設定在
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
/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
之後,然後重跑 postfix
和 dovecot
:postfix reload
/usr/local/etc/rc.d/dovecot.sh restart
最後還要回來處理一下憑證無效的警告,把 jedi-org-ca.crt 匯入到各應用程式用戶端,指定其為 Trusted Root CA (IE 翻譯成「受信任的根憑證授權」) ,之後就不會再跑出說憑證無效了。當然我也可以學 gslin 長輩那樣,花一點錢去買一份憑證來用,不過我又沒有在做大事業,想一想實在不太有此必要。