OpenSSL使用记录

openssl的功能主要包括对称加解密、计算哈希(信息摘要)和发布证书。

加解密

openssl enc -e -aes-128-cbc -in main.c -out main.enc
openssl enc -d -aes-128-cbc -in main.enc -out main_out.c

计算摘要

$ openssl dgst -sha1 main.c
SHA1(main.c)= cc9bf223848c972e66968fb3846fc7f85721796e
$ echo "\n" >> main.c
$ openssl dgst -sha1 main.c
SHA1(main.c)= 52019cdc4aea16ee68f4d881465f6b8f03cf1836

自建CA并签发&撤销证书

更改文件目录设置

# CA目录
dir=/home/yanglei/Workspace/ssl

# 证书目录
certs=$dir/certs
# 证书备份目录
new_certs_dir=$dir/newcerts
# CA证书
certificate=$dir/cacert.pem

# CA数据库
database=$dir/CA/index.txt
# CA序列号
serial=$dir/CA/serial

# 吊销证书目录
crl_dir=$dir/crl
# 吊销证书编号
crlnumber=$dir/crlnumber
crl=$dir/crl.pem

# CA私钥目录
privatekey=$dir/private/cakey.pem

创建文件夹certs、newcerts、CA、private、crl

创建文件crlnumber(注意写入echo 01 > crlnumber)

创建文件CA/index.txt、CA/serial(注意写入echo 01 > serial)

创建随机数private/.rand

证书字段

Country Name(C)国家

State or Province Name(S)省

Locatily Name(L)市

Organization Name(O)组织名

Organization Unit Name(OU)补充

Common Name(CN)通常为域名/网址

Email Address

生成自签名证书

# /home/yanglei/Workspace/ssl
$ openssl genrsa -out private/cakey.pem 1024
$ openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
# 或者先生成请求再签名
$ openssl req -new -key xxx.pem -out xxx.csr
$ openssl x509 -req -in xxx.csr -signkey cakey.pem -out xxx.crt

签发证书

# /home/yanglei/Workspace/testssl
$ openssl genrsa -out user1.pem 1024
$ openssl rsa -in user1.pem -out user1.pub -pubout
$ openssl req -new -key user1.pem -out user1.csr -days 365
# /home/yanglei/Workspace/ssl
$ openssl ca -in ../testssl/user1.csr -out certs/user1.crt -days 365
$ openssl x509 -in certs/user1.crt -noout -text

撤销证书

# 吊销证书
$ openssl ca -revoke newcerts/01.pem
# 发布吊销列表
$ openssl ca -gencrl -out crl/ca.crl
# 查看吊销列表
$ openssl crl -in crl/ca.crl -noout -text
Lei Yang
Lei Yang
PhD candidate

My research interests include visual speech recognition and semantics segmentation.