genpkey で秘密鍵を作る
後述するプログラムが上手く動かないからコマンドラインで作る.
道具
資料
NAME
genpkey - generate a private key
SYNOPSIS
openssl genpkey [-out filename] [-outform PEM|DER] [-pass arg] [-cipher] [-engine id] [-paramfile file] [-algorithm alg] [-pkeyopt opt:value] [-genparam] [-text]
/docs/manmaster/man1/genpkey.htmlDESCRIPTION
The genpkey command generates a private key.
使用例
openssl genpkey -out pkey.pem -outform pem -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
プログラム例
PEM_write_RSAPrivateKey() 実行行で「プログラム '[2232] genpKey.exe: ネイティブ' はコード 1 (0x1) で終了しました。」という出力を最後に終わる.
#ifdef _DEBUG #pragma comment(lib, "libeay32MDd.lib") #pragma comment(lib, "ssleay32MDd.lib") #else #pragma comment(lib, "libeay32MD.lib") #pragma comment(lib, "ssleay32MD.lib") #endif #include <stdio.h> #include <stdlib.h> #include <openssl/rsa.h> #include <openssl/pem.h> int main ( int argc, char *argv[] ) { // 秘密鍵を作る const int keybitLength = 2048; const int exponent = 65537; RSA *rsa = RSA_generate_key( keybitLength, exponent, NULL, NULL ); if ( rsa == NULL ) { perror("RSA_generate_key() が不成立"); return 0; } // argv[1] 次第で鍵をファイルに保存する if ( argc > 1 ) { FILE *fp; fopen_s( &fp, argv[1], "w" ); if ( fp != NULL ) { PEM_write_RSAPrivateKey( fp, rsa, NULL, NULL, 0, NULL, NULL ); fclose( fp ); }else{ perror("ファイルを作成できません"); } } return 0; }