Сертификат клиента MSXML2.ServerXMLHTTP

Я использую MSXML2.ServerXMLHTTP в JScript / VBA и хочу указать путь к сертификату клиента. В WinHTTP.WinHTTPRequest я мог бы использовать параметр .setClientCertificate, но в MSXML2.ServerXMLHTTP этого, похоже, нет.

Есть ли какой-нибудь аргумент, который я могу использовать, чтобы получить тот же эффект? Мне нужно использовать MSXML2.ServerXMLHTTP, поскольку я использую его синхронно, а WinHTTP не поддерживает это.

Пример кода JScript / VBA:

var H = new ActiveXObject('MSXML2.ServerXMLHTTP.6.0')
    H.open('GET', 'https://stackoverflow.com/', true)
    H.setRequestHeader('Cookie', 'yesplease')
    H.setClientCertificate('CURRENT_USER\MY\USERNAME')  <-- this line doesn't work
    H.send

Итак, указанные выше ошибки в строке setClientCertificate. Однако приведенное ниже будет работать (но, как уже упоминалось, я не могу использовать WinHTTP)

var H = new ActiveXObject('WinHTTP.WinHTTPRequest.5.1')
    H.open('GET', 'https://stackoverflow.com/', true)
    H.setRequestHeader('Cookie', 'yesplease')
    H.setClientCertificate('CURRENT_USER\MY\USERNAME')  <-- this line DOES work
    H.send

Есть ли способ использовать setClientCertificate с объектом MSXML2.ServerHTTP?


person JasperD    schedule 13.09.2019    source источник
comment
SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3 'и H3   -  person QHarr    schedule 13.09.2019
comment
Спасибо, @QHarr !! В конечном итоге это дало мне ответ; H.setOption (3, 'CURRENT_USER \\ MY \\ USERNAME') - можете ли вы отправить его в качестве ответа, чтобы я мог его принять?   -  person JasperD    schedule 14.09.2019
comment
привет, конечно. Добавлен. Пожалуйста, отредактируйте по мере необходимости. Я не думаю, что вам нужен (), т.е. .setOption 3, \ value \ .......   -  person QHarr    schedule 14.09.2019
comment
@JasperD, не могли бы вы объяснить эту часть "CURRENT_USER \\ MY \\ USERNAME" немного подробнее? Это фактический путь сертификата, хранящегося локально? Или это путь сертификата в реестре IE? Или не могли бы вы рассказать, как вы его нашли. Спасибо!   -  person Gin    schedule 03.07.2020


Ответы (1)


Ты хочешь

.setOption 3, "\value\......."

Подробно здесь:

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms763811(v%3Dvs.85) under `SXH_OPTION_SELECT_CLIENT_SSL_CERT`

Синтаксис

oServerXMLHTTPRequest.setOption option, value

Согласно вашему коду

H.setOption 3, "CURRENT_USER\\MY\\USERNAME"

Для постоянного

SXH_OPTION_SELECT_CLIENT_SSL_CERT = 3 '&H3
person QHarr    schedule 14.09.2019
comment
Не могли бы вы объяснить эту часть "CURRENT_USER \\ MY \\ USERNAME" немного подробнее? Это фактический путь сертификата, хранящегося локально? Или это путь сертификата в реестре IE? Или не могли бы вы рассказать, как вы его нашли. Спасибо! - person Gin; 03.07.2020
comment
Он использовался в вопросе, но должен быть путем сертификата - person QHarr; 03.07.2020