证书签名
-
使用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 选项->内容->证书中找找