20.06.2017

Тестирование Kamailio и multidomain сертификата ssl

Как подключить к Камалио самоподписанный multidomain сертификат.

Как обычно источники: Статья 1, Статья 2

Смысл простой, я так понял это можно сделать добавив extensions в сертификат, а это в свою очередь определяется в файлике openssl.conf

Находим секцию REQ в openssl.conf проверяем, что x509_extensions не закомментирован:

[req]
...
x509_extensions = v3_ca

Затем добавляем секцию v3_ca и указываем в ней следующее:

[v3_ca]
...
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = example.co.uk
DNS.4 = www.example.co.uk

У меня сработало и сертификат стал иметь несколько доменных зон, что крайне удобно когда использует DNS файловер.

Проверить, кстати, можно очень просто после создания запроса на сертификат, выполните

openssl req -text -noout -in <запрос_сертификата>.csr

И если увидите, что-то подобное, то можно генерировать сертификат.

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=DE, ST=Germany, L=City, O=Company, OU=Organisation-Unit, CN=server1.example.com/emailAddress=alias@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (4096 bit)
                Modulus (4096 bit):
[...]
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name:
                DNS:server1.example.com, DNS:mail.example.com, DNS:www.example.com
, DNS:www.sub.example.com, DNS:mx.example.com, DNS:support.example.com
    Signature Algorithm: sha1WithRSAEncryption
[...]

значит всё удалось.

9.09.2012

Новичкам в камалио

По умолчанию в kamailio.conf разрешены звонки с внешних доменов(поле FROM) на внутренний домен. Привести это может вот к чему, если у вас в дальнейшем Kamailio использует модуль DROUTING или както иначе вы маршрутизируетет звонки, то звонок предназначенный для локального пользователя (по затее разработчиков) может быть отправлен на внешний gateway.

Будьте внимательны!

# authenticate if from local subscriber
if (from_uri==myself)
{
if (!proxy_authorize(“$fd”, “subscriber”)) {
proxy_challenge(“$fd”, “0”);
exit;
}
if (is_method(“PUBLISH”))
{
if ($au!=$fU || $au!=$tU) {
sl_send_reply(“403″,”Forbidden auth ID”);
exit;
}
if ($au!=$rU) {
sl_send_reply(“403″,”Forbidden R-URI”);
exit;
}
#!ifdef WITH_MULTIDOMAIN
if ($fd!=$rd) {
sl_send_reply(“403″,”Forbidden R-URI domain”);
exit;
}
#!endif
} else {
if ($au!=$fU) {
sl_send_reply(“403″,”Forbidden auth ID”);
exit;
}
}

consume_credentials();
# caller authenticated
} else {
# caller is not local subscriber, then check if it calls
# a local destination, otherwise deny, not an open relay here
if (!uri==myself)
{
sl_send_reply(“403″,”Not relaying”);
exit;

}

Решение проблемы на мой взгляд в следующем, можно запретить входящие звонки вообще с IP кроме тех, кроме определенных, но грамотнее видимо будет, для “входящих” звонков не применять правило DROUTING.