生成一个1024位的私钥文件rsa_private_key.pem :
openssl genrsa -out rsa_private_key.pem 1024
从私钥中提取公钥rsa_public_key.pem:
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -outform PEM -pubout
将私钥转换成 DER 格式:
openssl rsa -in rsa_private_key.pem -out rsa_private_key.der -outform der
将公钥转换成 DER 格式:
openssl rsa -in rsa_public_key.pem -out rsa_public_key.der -pubin -outform der
把RSA私钥转换成PKCS8格式:
openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
从私钥创建公钥证书请求:
openssl req -new -key rsa_private_key.pem -out rsa_public_key.csr
生成证书并签名(有效期10年):
openssl x509 -req -days 3650 -in rsa_public_key.csr -signkey rsa_private_key.pem -out rsa_public_key.crt
把crt证书转换为der格式:
openssl x509 -outform der -in rsa_public_key.crt -out rsa_public_key.der
把crt证书生成私钥p12文件:
openssl pkcs12 -export -out rsa_private_key.p12 -inkey rsa_private_key.pem -in rsa_public_key.crt
对vmlinuz-initrd-7260a0进行签名:
openssl dgst -sha256 -sign private_key.pem -out vmlinuz-initrd-7260a0.sign vmlinuz-initrd-7260a0
对vmlinuz-initrd-7260a0+vmlinuz-initrd-7260a0.sign进行校验:
openssl dgst -sha256 -verify public_key.pem -signature vmlinuz-initrd-7260a0.sign vmlinuz-initrd-7260a0
我在目录中创建一个hello的文本文件,然后利用此前生成的公钥加密文件:
openssl rsautl -encrypt -in hello -inkey test_pub.key -pubin -out hello.en
-in指定要加密的文件,-inkey指定密钥,-pubin表明是用纯公钥文件加密,-out为加密后的文件。
解密文件:
openssl rsautl -decrypt -in hello.en -inkey test.key -out hello.de
-in指定被加密的文件,-inkey指定私钥文件,-out为解密后的文件。
二进制文件与base64编码互转
openssl base64 -in pubkey.bin -out pubkey.pem
openssl base64 -d -in pubkey.pem -out pubkey.bin