2015-07-28 2 views
0

Я пытаюсь подключиться к удаленному серверу, который требует взаимного авторизации. Я получил P12-файл с сервера, и использовать следующие команды для создания моего закрытого ключа и клиентского сертификата:Взаимная аутентификация с Jruby Manticore

openssl pkcs12 -in my_dev.p12 -out clientCert.crt -nokeys -clcerts 
openssl pkcs12 -in my_dev.p12 -nocerts -nodes -passin pass:mypassword | openssl rsa -out privkey.pem 

И я использовал следующий код для установки клиента Мантикора:

client = Manticore::Client.new(
    pool_max: 200, 
    pool_max_per_route: 200, 
    ssl: { verify: :disable, client_key: client_key , client_cert: client_cert }) 

url = "https://my_url.com" 
resp = client.get(url).call 

ответ Я получаю это:

401 Unauthorized 
Unauthorized 
This server could not verify that you\nare authorized to access the document 
requested. Either you supplied the wrong 
credentials (e.g., bad password), or your 
browser doesn't understand how to supply 
the credentials required. 

Я очень новой для использования Mutual Auth, и я не знаю точно, где я неправильно. Я правильно ли получил clientCert и privateKey? Правильно ли я отдаю ключ и сертификат Мантикоре?

ответ

1

Вы можете использовать PKCS12 файлы непосредственно из Мантикоры с опцией ssl[:keystore]:

client = Manticore::Client.new(
    pool_max: 200, 
    pool_max_per_route: 200, 
    ssl: { keystore: "/path/to/auth.p12", keystore_password: "your_password" } 
) 

keystore используется для сертификатов, которые вы хотите представить на удаленный сервер, в то время как truststore используется для общественных сертификатов, которые вы хотите использовать для проверки подлинности удаленного сервера; вы, вероятно, не должны использовать verify: :disable в этом случае, так как вы хотите проверить личность другого конца соединения.

+0

Спасибо за ответ Крис. Я настроил клиента, как вы изложили выше, но теперь я получаю эту ошибку: «Manticore :: ClientProtocolException: не удалось создать путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: не удалось найти допустимый путь сертификации для запрошенной цели». Это проблема с моим клиентом или с сервером? – bkahler

+1

Скорее всего, из-за того, что Manticore не может проверить сертификат сервера (т. Е. Потому что это не сертификат, подписанный CA, и/или потому, что вам не хватает соответствующих сертификатов). ': truststore' позволит вам указать хранилище доверия для использования (т. е. такое, которое содержит общую половину сертификата SSL сервера), или вы можете предоставить' ca_file', который является цепочкой сертификатов X509. –

+1

Кроме того, вы можете попробовать его с помощью 'verify:: disable', чтобы убедиться, что это действительно проблема, хотя, как я уже упоминал, я не рекомендую это для использования в производстве, поскольку это означает, что вы можете подключиться к ненадежному серверу. –

Смежные вопросы