Debian Jessie から Stretch へのアップグレード
6月17日、Debianの2年振りのメジャーアップデートが行われ、stretch(v9)がstableに昇格した。
wheezy(v7)からjessie(v8)へのアップデートの場合は、initからsystemdへの変更という大きな問題があったためクリーンインストールを行った。だが今回は、クリーンインストールでなくアップグレードでも大きな問題は起こらなかった。
私の関係では、サーバ3機、クライアント2機のアップグレードを行ったので、その手順と問題点を記述する。なお、正確にはクライアントマシン2機はjessie-backportsに設定していたが、そのことによる障害はなかったようだ。
アップグレードは、次の手順で行った。なお、apt-getの代わりにaptitudeを使うことは勧められない。メジャーアップデートの際は避けた方が良い*1。
- 現状での apt-get update & apt-get upgrade
- sources.list を書き換え(jessie から stretchへ)
- apt-get update
- apt-get upgrade
- apt-get update (無駄ではない)
- apt-get dist-upgrade
- apt-get autoremove (不必要なパッケージを削除する)
- 再起動
唯一の問題点*2
当方のサーバはpopサーバとしてdovecotを使用している。今回のアップグレードの直後、クライアントからのpop3sアクセスが出来なくなる問題が発生した。dovecotのログには
pop3-login: Fatal: Invalid ssl_protocols setting: Unknown protocol 'SSLv2'
と記録されていた。これは、/etc/dovecot/conf.d/10-ssl.confに
ssl_protocols = !SSLv2 !SSLv3
の記述があることが原因である。これを以下のように変更する。
ssl_protocols = !SSLv3
SSL3.0はセキュリティーの問題で禁止する必要があるのだが、SSL2.0はOpenSSL1.1で既に廃止されているため、敢えて禁止する必要がない。逆に「!SSLv2」の記述があると、何故か、SSL2.0方式の「ClientHello」を受け入れなくなるのだ。この様式の「ClientHello」は多くのメールクライアントで使用されているので、「!SSLv2」が残っていると接続ができなくなったわけだ*3。
しかし、本来必要でないはずの「!SSLv2」が、いまだに有効なのはどういうわけなのだろうか?