2019/08/03

apacheさんがTLSv1.3でしゃべってくれない

busterが出ました。

で、早速apt fullupgradeしてみました。
で、いつも通りapacheでつないでみたら、403... orz
google先生に聞いてみたところ、
apache-2-4-37-with-openssl-1-1-1-cannot-perform-post-handshake-authentication
というのがありました。
apache2.4.37、openssl1.1.1、FireFfoxも68からTLSv1.3がサポートされたのでつなごうとしているものの上手くいかないっぽい。
上記のやつはFF68で修正されたらしいのですが、確かにtlsv1.3で通信をしようとして
cannot perform post-handshake authentication
というエラーを吐いているようです。(環境はapache2.4.38 + openssl1.1.1c + FF68.01)

で、正しいかどうかわかりませんが
openssl ciphers -v TLSv1.3
とやったところ
Error in cipher list
4154144512:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:../ssl/ssl_lib.c:2549:
とかいわれるため、apacheやFFではなくopenssl側の問題かも?何がいかんのか・・・
なにやらv1.3では専用の宣言がいるとかなんとかいうのも見かけたような気もしますが。

とりあえず、apacheのSSLProtocolで -TLSv1.3としておけばv1.2でつないでくれますが・・・しばらくしたらまた試してみましょう。


https://bz.apache.org/bugzilla/show_bug.cgi?id=62975
というのがあって主なブラウザ(Chrome,Firefox)がPHAをサポートしてないのがいかんのだ、opensslのバグじゃねえぜ!と言ってました。
もうしばらく待ってればよいのかな?
回避方法は上記サイトにある通り、
・SSLProtocol ALL -TLSv1.3 と書いてv1.3を無効にする
・ssl.confのVirtualHostのdirectoryに書いてる"SSLVerifyClient require"をなくす
のどっちかで。
SSLVerifyClient noneにした場合はTLSv1.3で問題なく通信できますが・・・

→上記にレスがついてた
FF68以降で機能は入ったがデフォルト無効とのこと。
about:configで setting security.tls.enable_post_handshake_authをtrueにすればよいらしい。
ただし、なんでこれがデフォルト無効になっているかというとhttp2でまだこの仕様がdraftだから、という至極まっとうな理由。(1.1ではこれでよいらしい?)
・・・PHA使えなくね?

→とか思ってたら、この症状が出るのはディレクトリディレクティブでrequire peerをしている場合らしい。
なんでかというと、サイトにアクセスして最初に認証する際にどうすればよいかわからないからとか・・・そういわれるとそうなのかも
その上のホストレベルでrequireしてればよいとのことで、試してみたらちゃんとできました。
特定ディレクトリだけ制限したかったのですが、全体をやる必要があるのか・・まぁ仕方ありませんね。

0 件のコメント:

コメントを投稿