@SomeOneThere
.NET Developer

Что нужно сделать, чтобы подружить сервер на .NET и железяку по TLS 1.2?

Имеется в наличии:
- Tcp сервер на C# .NET 4.5 слушающий порт по протоколу TLS 1.2
- устройство с Wi-Fi модулем CC3100 от TI.

Нужно чтобы устройство могло подключиться к серверу.
Для решения были сгенерированы необходимые сертификаты. И скормлены обоим сторонам. Но сервер упорно не хочет принимать соединение мотивируя это тем, что у сторон разные алгоритмы работы.

openssl принимает подключение с тем же набором сертификатов.
Грешим на несовпадение возможных алгоритмов шифрования на устройстве и на сервере. Но спрашивается какого чёрта, ибо у сервера же больше возможностей и он, по идее, должен поддерживать весь зоопарк.

Поддерживаемые алгоритмы на устройстве:
SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA                 
SL_SEC_MASK_SSL_RSA_WITH_RC4_128_MD5                
SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA            
SL_SEC_MASK_TLS_DHE_RSA_WITH_AES_256_CBC_SHA       
SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      
SL_SEC_MASK_TLS_ECDHE_RSA_WITH_RC4_128_SHA          
SL_SEC_MASK_TLS_RSA_WITH_AES_128_CBC_SHA256          
SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA256          
SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256   
SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256


Сертификат сервера:
$ openssl x509 -in server.crt -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 11764687502553609488 (0xa34490f39b2f7510)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=RU, L=Novosibirsk, O=Server, CN=root CA
        Validity
            Not Before: Jan 21 05:19:45 2016 GMT
            Not After : Feb 20 05:19:45 2016 GMT
        Subject: C=RU, L=Novosibirsk, O=lab, CN=aaa
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:b9:fb:e3:f7:68:d3:a0:6c:43:aa:0d:c1:cb:34:
                    c5:fb:b9:ae:70:16:af:f9:f5:61:05:40:7f:bc:50:
                    b6:5b:f6:4a:01:5a:62:ab:9f:43:f6:c4:93:8b:1e:
                    a7:39:71:0c:ac:68:6f:5e:9f:ec:60:5a:ca:7e:4a:
                    c9:8e:c7:2d:db:b4:90:8c:da:b2:83:14:8d:c9:41:
                    16:2e:4f:4c:e9:ba:54:79:f3:7c:be:0c:83:5d:c6:
                    45:77:34:09:b6:70:e9:dc:bc:db:c4:af:65:98:29:
                    66:3b:68:ee:f6:81:30:a6:27:58:81:5e:53:08:b8:
                    57:e8:ae:c9:72:fc:ce:f7:4f
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier:
                keyid:DE:77:99:E4:66:B8:2B:53:6C:B7:18:72:7E:2C:BD:E1:45:0B:07:E4

            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
    Signature Algorithm: sha256WithRSAEncryption
         75:45:ed:d1:ff:5e:d3:54:44:1b:89:91:31:21:46:cc:7b:9e:
         83:a2:26:98:e0:03:26:05:0b:fc:39:ec:e9:e5:8e:52:f2:83:
         9e:6a:18:63:47:72:31:1a:59:14:7a:c4:b9:a4:43:f1:56:86:
         54:47:13:1d:42:5e:66:c6:0a:bf:c7:46:dc:76:5d:0f:1a:c6:
         f4:92:04:7d:05:84:6e:2e:11:a8:cd:3c:8e:de:c8:3c:84:b0:
         cb:23:c4:f9:91:f1:28:ce:46:24:56:cb:38:b7:92:e8:3e:e4:
         95:89:29:61:29:60:9e:aa:bf:f9:0d:6b:9a:90:ad:1f:45:85:
         0a:ff:5d:e5:13:83:2a:8e:3b:5f:5c:62:8f:bb:92:9c:6f:a8:
         35:12:74:9f:2c:30:77:db:d2:90:c5:69:3d:bd:0a:4f:a7:ba:
         5c:b4:5a:e5:e6:74:13:41:a3:57:55:bf:61:8e:3e:46:1e:22:
         35:09:73:0f:d7:23:f6:93:43:4f:65:1e:e2:93:bd:f3:9c:68:
         b1:ba:18:65:bf:59:99:bf:b4:5e:4a:66:f9:3e:7e:2c:e2:75:
         ac:d7:f8:8e:1a:c4:92:3f:56:99:ff:3f:0e:01:2f:3e:96:90:
         a6:6a:db:69:f9:b9:d0:b3:6b:be:bb:1e:8a:0a:b5:51:a9:9d:
         17:60:38:35

Сертификат клиента такой же, только в DER формате.

Уже попробовал всяко-разно - подключить не получается. Вылетает исключение, что алгоритмы разные.
UPD: попробовали сертификат сервера, в котором открытый ключ ECC(256 bits) ECDH_P256. В openssl видно, что сменился алгоритм шифрования на ECDHE-ECDSA-AES128-SHA256 был ECDHE-RSA-RC4-SHA. Но к tcp серверу на .NET так и не подключился - ошибка та же.
  • Вопрос задан
  • 265 просмотров
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Вы по этому примеру писали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы