LoginSignup
4
4

More than 3 years have passed since last update.

[squidでhttpsプロキシ] slackのメッセージ読み込みがwebsocketだったので回避する。

Posted at

はじめに

sslインターセプトするhttpsプロキシを運用していて、不具合があった点が解消できましたので、記録します。
利用する環境は、前回構築した以下のものです。
squidでActiveDirectory連携とSSLインターセプトするProxyをdockerで手軽につくる

なにが起こったのか

slackアプリでメッセージが着信しない。
手動で「新しいメッセージを読み込む」をクリックしないと更新されない状態だった。
Screenshot from Gyazo

原因調査

情報収集

まずは公式の情報を確認する。

Slack の使用には、Slack のメッセージングサーバーとメンバーのアプリやブラウザー間での持続的な接続が必須となります。接続のために Slack はポート443経由の WebSocket を使用しています。
場合によっては、プロキシやファイアウォールがこの接続を妨害することがあります。Slack を使用しているユーザーが特定の場所から接続できない場合、または Slack 接続テスト で WebSocket の問題が見られる場合には、以下の方法でプロキシやファイアウォールの設定を変更して Slack への接続を常時オープンな状態に保つ必要があります。

出典:Slackの接続問題を管理する

接続テスト

ということで、接続テスト用のURL https://[WORKSPACE].slack.com/help/test にアクセスしてみる。([WORKSPACE]はそれぞれのワークスペースに置き換えてください)
テスト結果は以下の通り、websocketがダメのようだ。
Screenshot from Gyazo

公式のワークアラウンドを確認する。

プロキシで SSL 暗号化解読を行っているかどうかを確認してください。暗号化解読を行っている場合は、プロキシで WebSocket をサポートするか、SSL 暗号化解読から *.slack-msgs.com、wss-primary.slack.com、wss-backup.slack.com、wss-mobile.slack.com のドメインを除外する必要があります。

出典:Slackの接続問題を管理する

解決方法

とのことなので、websoketを利用するサーバのリストを作成して、SSL_BUMPの除外をしてみることに。
対象のサーバは、slack公式に記載のあったものたち。

wslist
^wss-(backup|primary|mobile)\.slack\.com:443$
^([^/][^/]*\.)*slack-msgs\.com:443$

これを、 squid.conf に喰わせる。

squid.conf
--------8<-----(snip)-----8<----------
# ここでwebsocket対象のリストを作成する
acl wslist url_regex -i "/etc/squid/wslist"

http_port 8081 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/certs/ssl_bump_ca_cert.pem key=/etc/squid/certs/ssl_bump_ca_privkey.pem
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/local/squid/ssl_db -M 4MB
sslcrtd_children 5

# もともとは、以下のようにホワイトリストのもの以外をBUMP対象外としていたが、これをコメントアウトする。
#ssl_bump bump !whitelist

# BUMP対象外とするサイトにwebsocketのリストも含める
ssl_bump bump !whitelist !wslist

sslproxy_cert_error deny all
--------8<-----(snip)-----8<----------

これで再度テストしてみる。

Screenshot from Gyazo

うまくいった。
Screenshot from Gyazo

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4