命令行生成密钥
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key
openssl生成证书,公私钥的方法
- 创建私钥:
openssl genrsa -out private.pem 1024 //密钥长度,1024觉得不够安全的话可以用2048,但是代价也相应增大 - 创建公钥:
//为方便测试,还是需要公钥的。正常情况下,拿到证书就可以了
openssl rsa -in private.pem -pubout -out public.pem - 创建证书请求:
//使用私钥生成一个证书请求,证书请求提交到CA认证中心后会得到一份证书,当然,测试用时,就不必提交CA认证中心(收费)
openssl req -new -out cert.csr -key private.pem - 自签署根证书:
//自签署,就是不通过CA认证中心自行进行证书签名,这里用是x509
openssl x509 -req -in cert.csr -out public.der -outform der -signkey private.pem -days 3650 //10年有效
BIO
BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL、非加密的网络以及文件IO进行透明的连接。
printf函数十六进制格式化输出并且2字节对齐
使用
printf("%02hhx",encrypted[i]);
OpenSSL中读取PEM文件的问题
BIO *key = NULL;
RSA *r = NULL;
key = BIO_new(BIO_s_file());
BIO_read_filename(key, "c:\\private.key");
r = PEM_read_bio_RSAPrivateKey(key, NULL, NULL, NULL);
BIO_free_all(key);
BIO *key = NULL;
RSA *r = NULL;
key = BIO_new(BIO_s_file());
BIO_read_filename(key, "c:\\public.key");
r = PEM_read_bio_RSAPublicKey(key, NULL, NULL, NULL);
BIO_free_all(key);
、//PEM_read_bio_RSAPublicKey如果不成功,可以试试这个歌
r = PEM_read_bio_RSA_PUBKEY(key, NULL,NULL,NULL);
openssl_to_keys(r, 1024, priv, pub);