私は.pxf(AFAIK PKCS#12)証明書を持っています。 openssl C APIを使用してこの証明書のパスワードを確認するにはどうすればよいですか?openssl C APIを使用してpkcs#12証明書(.PXF)のパスワードを確認する方法は?
答えて
このような答えを見つける1つの方法は、実行しようとしているのと同じ機能を実行するOpenSSLユーティリティを見つけることです。この場合、OpenSSLに付属のpkcs12ユーティリティを使用してパスワードを確認することができます。
PFXファイルを検証するコマンドは以下の通りです:
openssl pkcs12 -in mypfx.pfx -noout
その情報を使用すると、その後、彼らはそれを行う方法を確認するために、そのsource code({openssl_src}/apps/pkcs12.c
)で見ることができます。
ソースコードは、パスワードを確認するためにPKCS12_verify_mac
を呼び出すことを示しています。パスワードがないことを確認するために、まず:
if(PKCS12_verify_mac(p12, NULL, 0))
{
printf("PKCS12 has no password.\n");
}
し、パスワードがある場合は、引数として渡すことによってそれを確認します。
if(PKCS12_verify_mac(p12, password, -1))
{
printf("PKCS12 password matches.\n");
}
OpenSSLがまた
openssl/demos/pkcs12
にPKCS12を操作するためのデモを持って
。 pkread.c
デモには、pfxファイルをパスワードで解析するための例があります。 gcc -std=c99 verifypfx.c -o verifypfx -lcrypto
でコンパイルさ
EVP_PKEY *pkey;
X509 *cert;
STACK_OF(X509) *ca = NULL;
if (!PKCS12_parse(p12, password, &pkey, &cert, &ca)) {
fprintf(stderr, "Error parsing PKCS#12 file\n");
ERR_print_errors_fp(stderr);
exit(1);
}
全例、:
#include <stdio.h>
#include <errno.h>
#include <openssl/pkcs12.h>
#include <openssl/err.h>
int main(int argc, char *argv[])
{
const char *password = "mypassword";
PKCS12 *p12;
// Load the pfx file.
FILE *fp = fopen("mypfx.pfx", "rb");
if(fp == NULL) { perror("fopen"); return 1; }
p12 = d2i_PKCS12_fp(fp, NULL);
fclose(fp);
OpenSSL_add_all_algorithms();
ERR_load_PKCS12_strings();
if(p12 == NULL) { ERR_print_errors_fp(stderr); exit(1); }
// Note: No password is not the same as zero-length password. Check for both.
if(PKCS12_verify_mac(p12, NULL, 0))
{
printf("PKCS12 has no password.\n");
}
else if(PKCS12_verify_mac(p12, password, -1))
{
printf("PKCS12 password matches.\n");
}
else
{
printf("Password not correct.\n");
}
return 0;
}
リンクが機能しなくなりました。 – sbose
OPには「openssl C APIの使用」が明確に尋ねられました。どのように "pkcs12ユーティリティを使用する"(どのリンクも壊れている)の答えは?また、「そこを見て、それがどのように動作するか」へのリンクを提供することも、答えではありません。 – FractalSpace
使用PKCS12_verify_mac()
。例えば。
FILE* f = fopen("myfile.pfx", "rb");
PKCS12* p12 = d2i_PKCS12_fp(f, NULL);
fclose(f);
if (!PKCS12_verify_mac(p12, (char*)"mypassword", strlen("mypassword")))
{
// handle failure
}
- 1. .NET WebRequestでPKCS#12証明書ファイルを使用する方法
- 2. opensslを使用してP12証明書を確認する方法は?
- 3. PKCS#12証明書付きのPython SSL
- 4. Nginx; OCSPを使用してSSLクライアント証明書を確認する方法
- 5. PKCS#12無効なパスワード
- 6. OpenSSL C++でのピア(クライアント)証明書の確認
- 7. OpenSSLは連鎖CAに確認して、私は証明書チェーンを持っている証明書
- 8. keytoolを使用して証明書のキーサイズを確認する方法は?
- 9. PKCS#12構造で複数のRSA鍵/証明書を管理する
- 10. boost :: asio SSLを使用してクライアント証明書を確認する方法は?
- 11. アップロードする場所とSpring WebアプリケーションでPKCS#12証明書を使用する方法
- 12. 証明書を「DER」形式からpkcs#12形式に変換するjava APIはありますか
- 13. C++でopensslを使用して証明書検証用の信頼チェーンを作成する方法
- 14. openSSLで自己署名証明書を確認する
- 15. 証明書の確認
- 16. Snapを使用してクライアント証明書を確認する方法
- 17. X509証明書を使用してSOAPリクエストを確認する
- 18. Windows証明書ストアで証明書を明確に認識
- 19. C#のファイル/ストリームからPkcs#7証明書チェーンを読み取る方法は?
- 20. OpenSSLは自分のCAからの証明書を確認します
- 21. システムにインストールされているクライアント証明書を確認する方法
- 22. CRLで証明書チェーンを確認する方法
- 23. openssl APIを使用してDER形式でサーバー証明書を読み取る方法は?
- 24. OpenSSLでWindows証明書ストアの証明書と秘密鍵を使用する
- 25. Pythonでルート証明書なしでSSL証明書を確認する方法は?
- 26. Simple.OData.Clientで証明書認証を使用する方法
- 27. 信頼できる内部CA証明書を使用してクライアント証明書を検証する方法は?
- 28. OpenSSLを使用してC++で署名を確認する
- 29. SAML証明書を確認する方法は?
- 30. Cocoa Touchでウェブサイト証明書を確認する方法は?
PKCS12_parseが1を返す場合、そのパスワードが正しかったことを指摘し、この回答を参照してください。http://stackoverflow.com/questions/3549459/extracting-client-certificate-private-key-from-p12-file – indiv
また、OpenSSL(http://www.openssl.org/docs/apps/pkcs12.html)に付属のpkcs12ユーティリティを使用してみてください。それがうまくいくなら、 '/apps/pkcs12.c'を見て、どのように動作するのか見てみましょう。 –
indiv
@indiv:2番目のコメントを回答として投稿し、私はそれを受け入れます:)。 –