OpenSSLは暗号化ツールキットとして広く使用されており、GmSSL(SM2/SM3/SM4/SM9/ZUC/SSLをサポートする暗号ツールキット)とともに使用されることもあります。
OpenSSLのバージョンを確認するには以下のコマンドを使用します:
openssl version
1.1 使用例
Java開発者は、PKCS#8形式のヘッダーや改行、空白を取り除き、キーをロードすることが多いです。一方で、.NETやPHPの開発者はPKCS#8のコマンドライン操作を必要としない場合があります。1.2 PKCS#1とPKCS#8
PKCS#1とPKCS#8は、RSA密钥ペアを含む暗号システムで広く使用される2つの標準です。主な違いはエンコード形式と使用例にあります。- PKCS#1 (公開鍵暗号標準 #1) は、RSA鍵ペアを特徴づけます。
- PKCS#8 (公開鍵暗号標準 #8) は、RSAだけでなくDSAやECCなどの他の種類の鍵にも適用可能な汎用的な私鍵表現標準です。
1.2.1 PKCS#1
PKCS#1は、PKCS#8の鍵オブジェクト部分のみを含み、バージョンやアルゴリズム識別子がありません。-----BEGIN RSA PRIVATE KEY-----
base64文字列、64バイトごとに改行。
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PUBLIC KEY-----
base64文字列、64バイトごとに改行。
-----END RSA PUBLIC KEY-----
1.2.2 PKCS#8
PKCS#8は、追加情報(バージョンやアルゴリズム識別子など)も含みます。-----BEGIN PRIVATE KEY-----
base64文字列、64バイトごとに改行。
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
base64文字列、64バイトごとに改行。
-----END PUBLIC KEY-----
1.2.3 PKCS#1とPKCS#8の区別
PKCS#1はヘッダーにRSAと記載されますが、PKCS#8ではそのような特定の識別子がありません。1.3 PEMとDER
PEMとDERは、密鍵と証明書を保存および転送するための標準的な形式で、相互に変換可能です。- DER: 二進制形式、ASN.1構造の直接エンコード、よりコンパクト。
- PEM: Base64エンコーディング、読みやすいためファイルサイズは大きくなります。
1.3.1 PEMからDERへの変換
openssl rsa -in rsa_private.pem -outform DER -out rsa_private.der
1.3.2 DERからPEMへの変換
openssl rsa -inform DER -in rsa_private.der -outform PEM -out rsa_private2.pem
2. RSA
2.1 私鍵の生成
# 1024ビットの秘密鍵生成
openssl genrsa -out private.pem 1024
# 秘密鍵情報を表示
openssl rsa -in private.pem -text
2.2 公開鍵の生成
# PKCS1秘密鍵から公開鍵を抽出
openssl rsa -in private_pkcs1.pem -pubout -out public_pkcs8.pem
3. SM2(楕円曲線暗号)
SM2は中国の国家暗号局(OSCCA)によって定義された楕円曲線暗号です。3.1 私鍵の生成
# SM2に基づいた秘密鍵生成
openssl ecparam -genkey -name SM2 -out sm2_private_ec.key
# 秘密鍵情報を表示
openssl ec -in sm2_private_ec.key -text
3.2 公開鍵の生成
# EC秘密鍵から公開鍵を抽出
openssl ec -in sm2_private_ec.key -pubout -out sm2_public_pkcs8.key
3.3 署名と検証
# ファイルの署名
openssl dgst -sign private.key -sha1 -out sm2_file.sign plain.txt
# 署名の検証
openssl dgst -verify pub.key -sha1 -signature sm2_file.sign plain.txt
4. 数字証明書
4.1 証明書のシリアル番号を表示
openssl x509 -in xx.cer -noout -serial
4.2 証明書から公開鍵を取得
openssl x509 -in xx.cer -pubkey -noout > xx.pem
5. 拡張
5.1 OpenSSLのインストール
5.1.1 Linux
# ソースコードの解凍
tar -zxvf openssl-3.2.1.tar.gz
# インストールディレクトリへ移動
cd openssl-3.2.1
# 設定
./Configure
# コンパイル
make
# インストール
make install