Я пытаюсь заставить работать взаимный TLS с помощью cpprestsdk под Linux.
В этом контексте тестирования сервер находится на локальном хосте.
Я установил самозаверяющие сертификаты . Кажется, это работает с помощью этих тестовых команд:
openssl s_server -accept 4433 -cert server.crt -key server.key -CAfile ca.crt -Verify 1
openssl s_client -connect localhost:4433 -cert client1.crt -key client1.key -CAfile ca.crt -debug
Ниже показано создание сертификата и конфигурация клиента/сервера в cpprest.
Ошибка cpprestsdk: Ошибка в подтверждении SSL при попытке любого запроса.
Может ли кто-нибудь помочь понять, где я ошибаюсь?
:: Authority
openssl ecparam -name prime256v1 -genkey -noout -out C:\Users\vbn\cert\ca.key
openssl req -new -x509 -sha256 -key ca.key -out ca.crt
:: Server Private key
openssl ecparam -name prime256v1 -genkey -noout -out server.key
:: Server Signing request
openssl req -new -sha256 -key server.key -out server.csr -addext "subjectAltName=DNS:localhost,IP:0.0.0.0,IP:127.0.0.0"
:: Server Certificate
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1000 -sha256 -extfile server-extensions.txt
:: Client Private key
openssl ecparam -name prime256v1 -genkey -noout -out client1.key
:: Client Signing request
openssl req -new -sha256 -key client1.key -out client1.csr
:: Client Certificate
openssl x509 -req -in client1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client1.crt -days 1000 -sha256 -extfile client-extensions.txt
Конфигурация клиента cpprest:
web::http::client::http_client_config config;
config.set_validate_certificates(true);
config.set_ssl_context_callback([path = settings.certificate_directory.value()](boost::asio::ssl::context& ctx)
{
ctx.set_password_callback([](std::size_t max_length, boost::asio::ssl::context::password_purpose purpose) {
return "0000";
});
ctx.set_options(boost::asio::ssl::context::default_workarounds | boost::asio::ssl::context::tlsv13);
ctx.use_certificate_file(path / "client1.crt", boost::asio::ssl::context::pem);
ctx.use_private_key_file(path / "client1.key", boost::asio::ssl::context::pem);
ctx.load_verify_file(path / "ca.crt");
ctx.set_verify_mode(boost::asio::ssl::verify_peer);
});
Конфигурация сервера cpprest:
web::http::experimental::listener::http_listener_config config;
config.set_ssl_context_callback([path = m_settings.certificates_path.value()](boost::asio::ssl::context& ctx)
{
ctx.set_password_callback([](std::size_t max_length, boost::asio::ssl::context::password_purpose purpose) {
return "0000";
});
ctx.set_options(boost::asio::ssl::context::default_workarounds | boost::asio::ssl::context::tlsv13);
ctx.use_certificate_file(path / "server.crt", boost::asio::ssl::context::pem);
ctx.use_private_key_file(path / "server.key", boost::asio::ssl::context::pem);
ctx.load_verify_file(path / "ca.crt");
ctx.set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_fail_if_no_peer_cert
});
Наконец, server-extensions.txt и client-extensions.txt соответственно:
extendedKeyUsage=serverAuth
extendedKeyUsage=clientAuth
Подробнее здесь: https://stackoverflow.com/questions/793 ... nder-linux
Взаимный TLS в cpprestsdk под Linux ⇐ C++
Программы на C++. Форум разработчиков
1736300430
Anonymous
Я пытаюсь заставить работать взаимный TLS с помощью cpprestsdk под Linux.
В этом контексте тестирования сервер находится на локальном хосте.
Я установил самозаверяющие сертификаты . Кажется, это работает с помощью этих тестовых команд:
openssl s_server -accept 4433 -cert server.crt -key server.key -CAfile ca.crt -Verify 1
openssl s_client -connect localhost:4433 -cert client1.crt -key client1.key -CAfile ca.crt -debug
Ниже показано создание сертификата и конфигурация клиента/сервера в cpprest.
Ошибка cpprestsdk: Ошибка в подтверждении SSL при попытке любого запроса.
Может ли кто-нибудь помочь понять, где я ошибаюсь?
:: Authority
openssl ecparam -name prime256v1 -genkey -noout -out C:\Users\vbn\cert\ca.key
openssl req -new -x509 -sha256 -key ca.key -out ca.crt
:: Server Private key
openssl ecparam -name prime256v1 -genkey -noout -out server.key
:: Server Signing request
openssl req -new -sha256 -key server.key -out server.csr -addext "subjectAltName=DNS:localhost,IP:0.0.0.0,IP:127.0.0.0"
:: Server Certificate
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1000 -sha256 -extfile server-extensions.txt
:: Client Private key
openssl ecparam -name prime256v1 -genkey -noout -out client1.key
:: Client Signing request
openssl req -new -sha256 -key client1.key -out client1.csr
:: Client Certificate
openssl x509 -req -in client1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client1.crt -days 1000 -sha256 -extfile client-extensions.txt
Конфигурация клиента cpprest:
web::http::client::http_client_config config;
config.set_validate_certificates(true);
config.set_ssl_context_callback([path = settings.certificate_directory.value()](boost::asio::ssl::context& ctx)
{
ctx.set_password_callback([](std::size_t max_length, boost::asio::ssl::context::password_purpose purpose) {
return "0000";
});
ctx.set_options(boost::asio::ssl::context::default_workarounds | boost::asio::ssl::context::tlsv13);
ctx.use_certificate_file(path / "client1.crt", boost::asio::ssl::context::pem);
ctx.use_private_key_file(path / "client1.key", boost::asio::ssl::context::pem);
ctx.load_verify_file(path / "ca.crt");
ctx.set_verify_mode(boost::asio::ssl::verify_peer);
});
Конфигурация сервера cpprest:
web::http::experimental::listener::http_listener_config config;
config.set_ssl_context_callback([path = m_settings.certificates_path.value()](boost::asio::ssl::context& ctx)
{
ctx.set_password_callback([](std::size_t max_length, boost::asio::ssl::context::password_purpose purpose) {
return "0000";
});
ctx.set_options(boost::asio::ssl::context::default_workarounds | boost::asio::ssl::context::tlsv13);
ctx.use_certificate_file(path / "server.crt", boost::asio::ssl::context::pem);
ctx.use_private_key_file(path / "server.key", boost::asio::ssl::context::pem);
ctx.load_verify_file(path / "ca.crt");
ctx.set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_fail_if_no_peer_cert
});
Наконец, server-extensions.txt и client-extensions.txt соответственно:
extendedKeyUsage=serverAuth
extendedKeyUsage=clientAuth
Подробнее здесь: [url]https://stackoverflow.com/questions/79337757/mutual-tls-in-cpprestsdk-under-linux[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия