私は openSSL ライブラリと PKI の初心者です。openSSL の専門家に簡単な質問があります。
Eric Rescorla によるこの記事「OpenSSL プログラミングの紹介 (パート I/II)」でコード サンプルの証明書を作成する方法を知っている人はいますか?
www.rtfm.com/openssl-examples/part1.pdf
www.rtfm.com/openssl-examples/part2.pdf
http://www.rtfm.com/openssl-examplesからソース コードをダウンロードしました。 問題は、証明書の有効期限が切れており、新しいルート証明書を作成する方法がわからないことです。
ルート証明書を作成するには? クライアント アプリとサーバー アプリの証明書を作成するにはどうすればよいですか? どの暗号化アルゴリズムを使用すればよいですか? 私が理解している限り、次のことを行う必要があります。
- キーペアを作成します。秘密鍵と公開鍵。
- 証明書要求を作成します (p10 形式)。
- 自己署名ルート証明書 (x509 形式) を作成します。
詳細は記事から明らかではありません。
これは私が証明書を作成しようとしている方法です:
1) CA 秘密鍵と証明書要求の作成: openssl req -newkey rsa -keyout ./ca_key.pem out.pem -out ./ca_req.pem -days 1095 -passin pass:"password" -subj "some information about CA" -拡張 v3_ca
2) 自己署名 CA 証明書を作成します openssl ca -create_serial -in ca_req.pem -out root.pem -days 1095 -passin pass:"password" -selfsign -extension v3_ca
3) サーバーの秘密鍵を生成し、証明書を要求します openssl req -newkey rsa -keyout server_key.pem out server_req.pem -days 1095 -passin pass:"password" -subj "some information about server"
4) サーバー証明書を作成します (この証明書は自己署名されていません。この証明書は CA 秘密鍵によって署名されています) openssl ca -in server_req.pem -out server.pem -passin pass:"password"
5) ユーザー秘密鍵の生成と証明書の要求 openssl req -newkey rsa -keyout user_key.pem out user_req.pem -days 1095 -passin pass:"password" -subj "some information about client"
6) ユーザー証明書を作成します (この証明書は自己署名されていません。この証明書は CA 秘密鍵によって署名されています) openssl ca -in user_req.pem -out client.pem -passin pass:"password"
ここで「rsa」アルゴリズムについてはわかりません。他のアルゴリズムを使用する必要があるかもしれません。
だから私はroot.pem、server.pem、client.pemを持っていますクライアントキーと証明書をclient.pemに置き、server.pemについても同じです。(記事のサンプル証明書と同じ方法です。)
しかし、これらの新しく生成された証明書を使用してサーバーを起動しようとすると、「DH ファイルを開けませんでした」というエラーが表示されます。
古い DH ファイルを現在のフォルダーに配置すると、サーバーが起動します。(dh1024.pem って何?)
次のステップ。クライアントを起動すると、別のエラー メッセージが表示されました。「証明書が検証されません。」
エラー コードは 20 です。x509_vfy.h のコード 20 の説明は、「発行者証明書をローカルで取得できません」です。
これはすべて、証明書を間違って作成したことを意味します。正しく行う方法がわかりません。
誰かアイデアがありますか?