2017-05-19 5 views
1

私は実際に書かれていることを記述するのに問題があります。証明書を使用してボールトサービスに認証しようとしています。 documentationは言う:カールの実装を理解する

APIを介して

ログイン用のエンドポイントが/ログインです。クライアントは単に のTLS証明書に接続し、ログインエンドポイントがヒットした場合、 バックエンドは、 と一致する信頼できる証明書があるかどうかを判断します。オプションで、認証するための単一の 証明書ロールを指定することもできます。今

$ curl --cacert ca.pem --cert cert.pem --key key.pem -d name=web \ 
    $VAULT_ADDR/v1/auth/cert/login -XPOST 

ノードのIP:私はに認証するポートだから次は私がリモートサーバーからやっているものです17.2.24.13:8200

です。

openssl s_client -showcerts -connect 17.2.24.13:8200 

これは、セクションが含まれている巨大な出力につながる::

-----BEGIN CERTIFICATE----- 
XXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXX 
-----END CERTIFICATE----- 

は今、私は、これはVaultが必要証明書であると信じています。

だから私は、今私が認証するつもりですvault.cerを使用してvault.cerファイル

に上記の出力を書き込みます。そこで、以下のコマンドを実行しています。私は取得しています

curl --cert vault.crt https://17.2.24.13:8200/v1/auth/cert/login -XPOST 

が、エラーは次のとおりです。

curl: (60) Certificate key usage inadequate for attempted operation. 
More details here: http://curl.haxx.se/docs/sslcerts.html 

curl performs SSL certificate verification by default, using a "bundle" 
of Certificate Authority (CA) public keys (CA certs). If the default 
bundle file isn't adequate, you can specify an alternate file 
using the --cacert option. 
If this HTTPS server uses a certificate signed by a CA represented in 
the bundle, the certificate verification probably failed due to a 
problem with the certificate (it might be expired, or the name might 
not match the domain name in the URL). 
If you'd like to turn off curl's verification of the certificate, use 
the -k (or --insecure) option. 

私は-kフラグを追加した場合、私は以下のエラーを取得します。

# curl -k --cert vault.crt https://17.2.24.13:8200/v1/auth/cert/login -XPOST 
{"errors":["client certificate must be supplied"]} 

だから、このシナリオでは本当に何が欠けているのか本当に混乱しています。

答えて

2

openssl s_client -showcerts -connect 17.2.24.13:8200の出力に示されている証明書は、サーバー証明書ではなく、クライアント証明書です。前者は、クライアントに対するサーバーの認証に使用されます。サーバーによって信頼され、公開鍵と秘密鍵の両方を所有している証明書を提示する必要のあるクライアントを、サーバーに対して認証しようとしています。

サーバーによって信頼されているクライアント証明書と、そのような証明書を取得する方法は、サービス所有者に問い合わせる必要があります。

1

以下のコマンドで取得した証明書は、Webサーバーの公開鍵です。 「彼らのTLS証明書」は、以下に引用符で

openssl s_client -showcerts -connect 17.2.24.13:8200 

クライアントが(カール)サーバーに提示する証明書を参照しています。

クライアントは単にあなたが署名した秘密鍵である必要がありますどのような彼らのTLS証明書

と接続します。私はこの質問を「ポール・ケラー」の質問「How to create .pem files for https web server」で見つけました。 CAによって署名されている必要がある場合は、署名するCAにCSRを送信するだけです。

関連する問題