证书签名

-

使用AES加密解密

AES 是共享密钥加密 属于分组密码只能加密固定长度的明文(基于XOR) 那么一般以128bit为一组 进行迭代加密 128bit=>16字节=>16个ascii字符 因此使用AES加密时一般需要16个ascii作为密钥 online

// 加密 base64 输出
echo hello,world! |openssl enc -aes-256-ecb  -nosalt  -base64 --pass pass:8579831002000329
// 解密
echo 4wA5xW0TVkRQd9ZtVxgmNQ== |openssl enc -d -aes-256-ecb  -nosalt  -base64 --pass pass:8579831002000329

生成公钥私钥

// 生成私钥
openssl genrsa -aes128 -passout pass:demo -out private.pem 4096
// 根据私钥生成公钥
openssl rsa -in private.pem -passin pass:demo -pubout -out public.pem

使用公钥加密文件

echo hello,world! > test_ras.txt
openssl rsautl -encrypt -inkey public.pem -pubin -in test_rsa.txt -out test_rsa.enc
base64 test_rsa.enc

使用私钥解密文件

openssl rsautl -decrypt -inkey private.pem -in test_rsa.enc -out test_rsa.decrtpt

使用私钥签名文件

openssl dgst -sha256 -sign private.pem -out ./test_rsa.txt.sign.sha256 ./test_rsa.txt

使用公钥验证签名文件

openssl dgst -sha256 -verify public.pem -signature ./test_rsa.txt.sign.sha256 ./test_rsa.txt

证书

证书中存储了一个上级CA的签名 一个被公正的公钥

使用生成的公钥注册证书

注册证书看起来要依赖他人的服务 因此这是使用自签名的证书

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

验证证书(确认证书中的公钥经过CA的公正)

// 从证书中获取公钥
openssl x509 -pubkey -noout -in cert.pem  > pubkey.pem
// 从证书中获取签名
// 获取签名的公钥(拿到此证书的签名的公钥 这一步会递归到根证书)
// 验证签名
// 使用签名验证公钥

自签名证书作为根证书 生成子证书

尝试使用自己的私钥解密https

windows side

pfx

windows pfx格式的证书只要双击文件就行了,会弹出窗口一直无脑点下一步即可

tips

证书过期删除旧的驱动直接用certmgr找到然后删除即可,有的时候找不到旧的证书 可以在IE->Internet 选项->内容->证书中找找

refs

sign-and-verify-a-file-using-openssl)