与 Jruby Manticore 的相互认证

Mutual Authentication with Jruby Manticore

我正在尝试连接到需要相互身份验证的远程服务器。我从服务器收到了一个 .p12 文件,并使用以下命令生成我的私钥和客户端证书:

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

并且我使用以下代码设置了 Manticore 客户端:

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.

我对使用相互身份验证还很陌生,不确定我到底哪里出错了。我是否正确提取了 clientCert 和 privateKey?我是否正确地向 Manticore 提供了密钥和证书?

您可以通过 ssl[:keystore] 选项直接从 Manticore 使用 PKCS12 文件:

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

keystore 用于您希望提供给远程服务器的证书,而 truststore 用于您希望用于验证身份的 public 证书远程服务器;在这种情况下,您可能不应该使用 verify: :disable,因为您确实想要验证连接另一端的身份。