SIP 493 Undecipherable: ошибки расшифровки S/MIME и сертификатов
Полная невозможность инициировать диалог в защищенных телекоммуникационных средах:
- Вызывающий узел получает ответ
SIP/2.0 493 Undecipherableна запросINVITEилиMESSAGE. - Сервер или клиент не могут расшифровать зашифрованное тело сообщения (S/MIME Body).
- В логах фиксируются ошибки криптографического провайдера:
Decryption failed,Unknown private keyилиCertificate expired. - Проблема возникает в ведомственных и Enterprise-сетях с повышенными требованиями безопасности (RFC 3261 S/MIME).
1. Проверка структуры S/MIME тела сообщения
Захватите дамп пакета. При использовании S/MIME заголовок Content-Type должен иметь вид application/pkcs7-mime:
INVITE sip:bob@secure.domain.com SIP/2.0
Via: SIP/2.0/TLS 192.168.1.5:5061;branch=z9hG4bK876
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m
Content-Disposition: attachment; filename=smime.p7m
Content-Length: 1852
[Двоичные зашифрованные данные S/MIME]2. Проверка соответствия открытых и закрытых ключей
Ошибка 493 означает, что вызывающая сторона зашифровала сообщение открытым ключом, для которого у получателя нет соответствующего приватного ключа. Проверьте актуальность сертификата на конечном узле:
openssl x509 -in /etc/asterisk/keys/bob_cert.pem -text -noout
# Проверка совпадения модуля открытого и закрытого ключа:
openssl x509 -noout -modulus -in bob_cert.pem | openssl md5
openssl rsa -noout -modulus -in bob_key.pem | openssl md5Хеш-суммы MD5 должны быть идентичны.
3. Проверка цепочки доверия CA (Certificate Authority)
Убедитесь, что корневой сертификат CA, подписавший публичные ключи абонентов, загружен в доверенное хранилище АТС:
# Debian/Ubuntu:
cp custom_ca.crt /usr/local/share/ca-certificates/
update-ca-certificates
# RHEL/CentOS:
cp custom_ca.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust4. Переход на TLS + SRTP (Альтернатива устаревшему S/MIME)
В большинстве современных инсталляций шифрование самого SIP-тела через S/MIME заменяется на транспортное шифрование SIP over TLS в комбинации со SRTP, что исключает возникновение ошибки 493:
[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
cert_file=/etc/asterisk/keys/asterisk.crt
priv_key_file=/etc/asterisk/keys/asterisk.key
method=tlsv1_2 Частые вопросы (FAQ)
Что означает статус SIP 493 Undecipherable?
Согласно RFC 3261, статус 493 генерируется получателем, если запрос содержит зашифрованное тело (например, S/MIME), которое принимающий узел не способен расшифровать из-за отсутствия нужного закрытого ключа или ошибки алгоритма.
Используется ли S/MIME в современных IP-АТС Asterisk / FreePBX?
Крайне редко. Подавляющее большинство систем использует шифрование сигнального канала на транспортном уровне через SIP over TLS (порт 5061) и шифрование медиа через SRTP.
Может ли истекший сертификат вызвать ошибку 493?
Да, если принимающий узел отклоняет процесс дешифрации из-за невалидности сертификата отправителя или истечения срока действия ключей шифрования.
Как убедиться, что клиент не шлет S/MIME?
Проверьте заголовок Content-Type в исходящем INVITE. Для стандартных звонков он должен иметь значение application/sdp.