У меня есть успешный запрос SOAP в SOAPUI, который я пытаюсь преобразовать в код R с пакетом httr
. В SOAPUI все, что мне нужно сделать для настроек SSL, это указать путь к файлу, который указывает на файл PKCS # 12 для хранилища ключей, а затем предоставить пароль в виде простого текста для файла PKCS # 12 в качестве пароля хранилища ключей. С этой настройкой все работает отлично.
В R, поскольку httr
использует curl
, я понимаю, что мне нужно извлечь клиентский SSL-сертификат и ключ SSL как два .pem
файла из связанный файл PKCS # 12. Поэтому я извлек их с помощью следующих команд OpenSSL:
openssl pkcs12 -in "path to .p12 file" -passin pass:******** -clcerts -nokeys -out "path to new cert.pem"
openssl pkcs12 -in "path to .p12 file" -passin pass:******** -nodes -nocerts -out "path to new key.pem"
Затем в свой запрос httr::POST
я включил эту опцию config
, чтобы указывать на файлы .pem
, чтобы дескриптор скручивания мог быть правильно определенным (я только временно установил ssl_verifypeer = F
, чтобы исключить возможность получения ошибки из-за пакета CA):
config(ssl_verifypeer = F, sslcert = "path to new cert.pem", sslkey = "path to new key.pem")
Однако всякий раз, когда я запускаю запрос httr::POST
, я получить следующую ошибку:
Error in curl::curl_fetch_memory(url, handle = handle) :
schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs
when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows
System event log.
Я не знаю, какую ошибку я здесь совершаю, но я боролся с ней в течение нескольких недель. Любая помощь здесь будет спасением.