1 DSA应用
1.1. 生成DSA参数集
生成1024位DSA参数集,并输出到文件dsaparam.pem。
$ openssl dsaparam -out dsaparam.pem 1024
1.2. 生成私钥
使用参数文件dsaparam.pem生成DSA私钥匙,采用3DES加密后输出到文件dsaprivatekey.pem。
$ openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem
1.3. 生成公钥
使用私钥匙dsaprivatekey.pem生成公钥匙,输出到dsapublickey.pem。
$ openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem
1.4. 修改密码
从dsaprivatekey.pem中读取私钥匙,解密并输入新口令进行加密,然后写回文件dsaprivatekey.pem。
$ openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin
2 RSA应用
2.1. 生成私钥
产生1024位RSA私匙,用3DES加密它,口令为trousers,输出到文件rsaprivatekey.pem。
$openssl genrsa -out rsaprivatekey.pem -passout pass:trousers -des3 1024
2.2. 生成公钥
从文件rsaprivatekey.pem读取私匙,用口令trousers解密,生成的公钥匙输出到文件rsapublickey.pem。
$openssl rsa -in rsaprivatekey.pem -passin pass:trousers -pubout -out rsapublickey.pem
2.3. 加密文件
用公钥匙rsapublickey.pem加密文件plain.txt,加密文件的内容有长度的限制。输出到文件cipher.txt
$openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in plain.txt -out cipher.txt
2.4. 解密文件
使用私钥匙rsaprivatekey.pem解密密文cipher.txt,输出到文件plain.txt。
$openssl rsautl -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out plain.txt
2.5. 签名文件
用私钥匙rsaprivatekey.pem给文件plain.txt签名,输出到文件signature.bin。
$openssl rsautl -sign -inkey rsaprivatekey.pem -in plain.txt -out signature.bin
2.6. 验证签名
用公钥匙rsapublickey.pem验证签名signature.bin,输出到文件plain.txt。
$openssl rsautl -verify -pubin -inkey rsapublickey.pem -in signature.bin -out plain.txt
2.7. 私钥签名
openssl dgst -sign rsaprivatekey.pem -sha1 -out a.sign plain.txt
2.8. 公钥验证
openssl dgst -verify rsapublickey.pem -sha1 -signature a.sign plain.txt
3 对称加密应用
1. 使用aes-128-cbc算法加密文件
openssl enc -aes-128-cbc -in install.log -out enc.log
2. 解密文件
openssl enc -d -aes-128-cbc -in enc.log -out install.log
3.加密文件后使用BASE64格式进行编码
openssl enc -aes-128-cbc -in install.log -out enc.log -a
4 消息摘要应用
4.1. 计算哈希值1
用SHA1算法计算文件file.txt的哈西值,输出到stdout。
$openssl dgst -sha1 file.txt
4.2. 计算哈希值2
用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt。
$ openssl sha1 -out digest.txt file.txt
4.3. DSA签名
用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin,签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中。
$ openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt
4.4. DSA验证
用dss1算法验证file.txt的数字签名dsasign.bin,验证的private key为DSA算法产生的文件dsakey.pem。
$ openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt
4.5. RSA签名
用sha1算法为文件file.txt签名,输出到文件rsasign.bin,签名的private key为RSA算法产生的文件rsaprivate.pem。
$ openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt
4.6. RSA验证
用sha1算法验证file.txt的数字签名rsasign.bin,验证的public key为RSA算法生成的rsapublic.pem。
$ openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt
5 证书制作
5.1. 生成根证书
openssl req -new -x509 -keyout ca.key -out ca.crt
5.2. 生成私钥
openssl genrsa -des3 -out server.key 1024
5.3. 生成证书
openssl req -new -key server.key -out server.csr
5.4. 签名证书
拷贝一份openssl.cnf文件至终端的工作目录下,修改文件中的dir路径为终端的工作目录(如:E:/openssl),并创建其他目录(E:/openssl/newcerts)、创建index.txt、serial文件,向serial文件中写入内容01。
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
5.5. 验证证书
openssl verify -CAfile ca.crt server.crt
6 证书格式转换
6.1. x509转换为pfx
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
6.2. 从PKCS#12导出私钥
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
6.3. PKCS#12到PEM 的转换
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem
6.4. 从 PFX 格式文件中提取私钥格式文件 (.key)
openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key
6.5. PEM 到 PKCS#12 的转换
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem
7 Keytool工具
7.1. 生成证书
创建一个别名为test1的证书条目,该条目存放在名为test.keystore的密钥库中,若test.keystore密钥库不存在则创建。
keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"
7.2. 查看密钥库
keytool -list -keystore test.keystore
7.3. 导出证书
将名为test.keystore的密钥库中别名为test1的证书条目导出到证书文件test.crt中。
keytool -export -alias test1 -file test.crt -keystore test.keystore
7.4. 导入证书
将证书文件test.crt导入到名为test.keystore的密钥库中。
keytool -import -keystore test.keystore -file test.crt
7.5. 查看证书信息
keytool -printcert -file "test.crt"
7.6. 删除条目
keytool -delete -keystore test.keystore -alias test1
7.7. 修改条目口令
keytool -keypasswd -alias test1 -keystore test.keystore
或者
keytool -keypasswd -alias test1 -keypass passOld -new passNew -storepass testtest -keystore test.keystore