v
ベースシステムのOpenSSLのバージョンが古すぎるのでOpenSSLをportsからインストールします。
# pkg install openssl
portsのOpenSSLを使用するようにします。
+ DEFAULT_VERSIONS+=ssl=openssl
certbotをportsからインストールします。
# portinstall py-certbot # pkg lock py27-cryptography
ベースシステムのOpenSSLをそのまま使用できるの pkgからcertbotをインストー ルします。
# pkg install py-certbot
# certbot certonly -m webmaster@next-hop.net --agree-tos --webroot -w /usr/local/www/apache24/data -d www.next-hop.net
Wordpress などのように Application DocumentRoot が / の場合は Alias を設定しておきます。
Alias /.well-known /usr/local/www/apache24/data/.well-known
# certbot renew --webroot -w /usr/local/www/apache24/data
セキュリティを高めたいときはsendmail.mcに以下を追加します。 ただし、相手の SMTP サーバも同様に対応している必要があります。
LOCAL_CONFIG O CipherList=HIGH:MEDIUM:-SSLv3:-SSLv2 O ServerSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3 +SSL_OP_CIPHER_SERVER_PREFERENCE O ClientSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3
sendmail.cfを再構築します。
# cd /etc/mail # make sendmail.cf # make install
rootで次のスクリプトを実行します。
#!/bin/sh LEDIR="/usr/local/etc/letsencrypt/live" HOSTNAME="`uname -n`" SUFFIX="" HOSTDIR="$HOSTNAME$SUFFIX" CERT="$LEDIR/$HOSTDIR/cert.pem" KEY="$LEDIR/$HOSTDIR/privkey.pem" CHAIN="$LEDIR/$HOSTDIR/chain.pem" SENDMAILDIR="/etc/mail/certs" if [ ! -f $CERT ]; then echo "file not found: $CERT" exit fi if [ ! -f $KEY ]; then echo "file not found: $KEY" exit fi if [ ! -f $CHAIN ]; then echo "file not found: $CHAIN" exit fi if [ ! -d $SENDMAILDIR ]; then mkdir $SENDMAILDIR fi cp -p $CERT $SENDMAILDIR/host.cert cp -p $KEY $SENDMAILDIR/host.key chmod 600 $SENDMAILDIR/host.key cp -p $CHAIN $SENDMAILDIR/cacert.pem cd $SENDMAILDIR HASHFILE="`openssl x509 -hash -noout -in cacert.pem`.0" if [ ! -f $HASHFILE ]; then ln -s cacert.pem $HASHFILE fi # for Cyrus imapd cp -p $KEY $SENDMAILDIR/host.key2 chown cyrus:cyrus $SENDMAILDIR/host.key2 chmod 600 $SENDMAILDIR/host.key2
デーモンを再起動します。
# /etc/rc.d/sendmail restart
Sendmail用証明書から流用します。
tls_client_ca_file: /etc/mail/certs/cacert.pem tls_client_ca_dir: /etc/mail/certs tls_server_key: /etc/mail/certs/host.key2 tls_server_cert: /etc/mail/certs/host.cert tls_ciphers: HIGH:MEDIUM:-SSLv3:-SSLv2
デーモンを再起動します。
# /usr/local/etc/rc.d/imapd restart
TLSCACertificateFile /usr/local/etc/openldap/certs/chain.pem TLSCACertificatePath /usr/local/etc/openldap/certs TLSCertificateFile /usr/local/etc/openldap/certs/host.cert TLSCertificateKeyFile /usr/local/etc/openldap/certs/host.key TLSCipherSuite HIGH:MEDIUM:-SSLv3:-SSLv2
TLS_CACERT /usr/local/etc/openldap/certs/cacert.pem TLS_CACERTDIR /usr/local/etc/openldap/certs TLS_CERT /usr/local/etc/openldap/certs/host.cert TLS_KEY /usr/local/etc/openldap/certs/host.key TLS_CIPHER_SUITE HIGH:MEDIUM:-SSLv3:-SSLv2
rootで次のスクリプトを実行します。
#!/bin/sh LEDIR="/usr/local/etc/letsencrypt/live" #HOSTNAME="`uname -n`" HOSTNAME="ldap.next-hop.net" #SUFFIX="-0001" SUFFIX="" HOSTDIR="$HOSTNAME$SUFFIX" CACERT="/etc/ssl/cert.pem" CHAIN="$LEDIR/$HOSTDIR/chain.pem" CERT="$LEDIR/$HOSTDIR/cert.pem" KEY="$LEDIR/$HOSTDIR/privkey.pem" OPENLDAPDIR="/usr/local/etc/openldap/certs" if [ ! -f $CACERT ]; then echo "file not found: $CACERT" exit fi if [ ! -f $CHAIN ]; then echo "file not found: $CHAIN" exit fi if [ ! -f $CERT ]; then echo "file not found: $CERT" exit fi if [ ! -f $KEY ]; then echo "file not found: $KEY" exit fi if [ ! -d $OPENLDAPDIR ]; then mkdir $OPENLDAPDIR fi cd $OPENLDAPDIR if [ -f cacert.pem ]; then rm cacert.pem fi cp -p $CACERT cacert.pem if [ -f chain.pem ]; then rm chain.pem fi cp -p $CHAIN chain.pem HASHCA="`openssl x509 -hash -noout -in cacert.pem`.0" HASHCHAIN="`openssl x509 -hash -noout -in chain.pem`.0" if [ -h $HASHCA ]; then rm $HASHCA fi ln -s cacert.pem $HASHCA if [ -h $HASHCHAIN ]; then rm $HASHCHAIN fi ln -s chain.pem $HASHCHAIN cp -p $CERT host.cert cp -p $KEY host.key chown ldap:ldap host.key chmod 600 host.key
slapd を再起動します。
# service slapd restart
tls_cacertfile /usr/local/etc/openldap/certs/cacert.pem tls_cacertdir /usr/local/etc/openldap/certs tls_cert /usr/local/etc/openldap/certs/host.cert tls_key /usr/local/etc/openldap/certs/host.key tls_ciphers HIGH:MEDIUM:-SSLv3:-SSLv2
tls_cacertfile /usr/local/etc/openldap/certs/cacert.pem tls_cacertdir /usr/local/etc/openldap/certs tls_cert /usr/local/etc/openldap/certs/host.cert tls_key /usr/local/etc/openldap/certs/host.key tls_ciphers HIGH:MEDIUM:-SSLv3:-SSLv2
rootで次のスクリプトを実行します。
#!/bin/sh VPNCMD="/usr/local/sbin/vpncmd localhost:5555 /SERVER /PASSWORD:password /CMD" LEDIR="/usr/local/etc/letsencrypt/live" HOSTNAME="`uname -n`" SUFFIX="" HOSTDIR="$HOSTNAME$SUFFIX" CERT="$LEDIR/$HOSTDIR/cert.pem" KEY="$LEDIR/$HOSTDIR/privkey.pem" if [ ! -f $CERT ]; then echo "file not found: $CERT" exit fi if [ ! -f $KEY ]; then echo "file not found: $KEY" exit fi $VPNCMD ServerCertSet /LOADCERT:$CERT /LOADKEY:$KEY
デーモンを再起動します。
# /usr/local/etc/rc.d/softether_server restart
# openssl ciphers -v HIGH:MEDIUM:-SSLv3:-SSLv2
Copyright ©2000-2018 T.Hiraga <hiraga@next-hop.net> All Rights Reserved. Last modified: $Date: 2018/02/28 21:58:19 $ |