随笔 - openssl证书的生成和使用

本文涉及的产品
Digicert DV 证书 单域名,20个 3个月
简介: 证书类别 - 根证书 生成服务器证书,客户端证书的基础。自签名。 - 服务器证书 由根证书签发。

证书类别
- 根证书 生成服务器证书,客户端证书的基础。自签名。
- 服务器证书 由根证书签发。配置在服务器上。
- 客户端证书 由根证书签发。配置在服务器上,并发送给客户,让客户安装在浏览器里。

要注意,
1. 服务器证书的cn要和servername一致,否则启动httpd时有警告。
2. 浏览器安装客户端证书时,需要用pkcs12转换成pfx格式,否则可以安装但无效。
3. 把根证书安装到浏览器的受信CA中,访问服务器时就不会出警告了。


环境: CentOS6_x64 openssl 1.0.1 apache2.2

准备

echo -n > /etc/pki/CA/index.txt
echo '00' > /etc/pki/CA/serial

注意,index.txt需要初始化为0字节,连换行也不能有。

1 根证书

# 修改/etc/pki/tls/openssl.cnf,放开nsCertType= server的注释。
[ usr_cert ]
nsCertType = server

cd /etc/pki/CA
# 生成密钥
openssl genrsa -out private/myCA.key 1024
# 生成自签名证书
openssl req -new -x509 -key private/myCA.key -out certs/myCA.crt

把这个crt导入客户端浏览器,就不会显示证书警告了。

2 服务器证书

cd /etc/pki/tls
openssl genrsa -out private/sv.key 1024
# 生成请求
openssl req -new -key private/sv.key -out private/sv.csr
# 使用根证书签名
openssl ca -in private/sv.csr -keyfile ../CA/private/myCA.key -cert ../CA/certs/myCA.crt -out certs/sv.crt

有时,签发多个证书时,由于common name等信息重复导致签名失败,
可以初始化index.txt和serial。

3 客户端证书

# 修改/etc/pki/tls/openssl.cnf,注释掉nsCertType= server,去掉的nsCertType = client, email注释。
[ usr_cert ]
nsCertType = client, email

cd /etc/pki/tls
openssl genrsa -out private/clnt1.key 1024
openssl req -new -key private/clnt1.key -out private/clnt1.csr
openssl ca -in private/clnt1.csr -keyfile ../CA/private/myCA.key -cert ../CA/certs/myCA.crt -out certs/clnt1.crt

个人证书需要转成pfx格式

openssl pkcs12 -export -in certs/clnt1.crt -out certs/clnt1.pfx -inkey private/clnt1.key

apache 配置

SSLCertificateFile /etc/pki/tls/certs/sv.crt
SSLCertificateKeyFile /etc/pki/tls/private/sv.key
SSLCertificateChainFile /etc/pki/tls/certs/chain.crt      <--这个从哪儿来的?
SSLCACertificateFile /etc/pki/tls/certs/myCA.crt

    SSLVerifyClient require
    SSLVerifyDepth  1

nginx配置

    server {
        listen       443 ssl;
        server_name  localhost;
        ssl_certificate      /etc/pki/tls/certs/sv2.crt;
        ssl_certificate_key  /etc/pki/tls/private/sv2.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        ssl_client_certificate /etc/pki/CA/certs/myCA.crt;
        ssl_verify_client on;
        ssl_verify_depth 1;

另外,遇到了证书不能删除的问题。解决方法是:
使用mmc,进入 证书,即可删除。

windows上配置nginx时,可能遇到缓存等模块不可用的情况,
需要注释掉ssl_session_cache等。

生成dh参数:

dhparam -out dh1024.pem 1024
相关实践学习
通过HTTPS加速网关快速部署网站加密
本实验指导您如何在HTTPS加速网关中添加域名,以及在添加域名后如何进行修改和重置。
目录
相关文章
|
算法 网络安全 数据安全/隐私保护
使用 openssl 生成证书
一、openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。官网:https://www.openssl.
7570 0
Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
|
29天前
|
安全 搜索推荐 前端开发
【https】如何让http升级成https
文章详细讲解了如何让HTTP到HTTPS的操作过程
66 0
【https】如何让http升级成https
|
应用服务中间件 nginx
流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy 红色标记表示视频设备和麦克风设备 看到乱码了吧!来这里查看哦   FFmpeg编码推送到R...
3380 0
|
Linux Windows
curl命令使用
curl命令使用
441 0
curl命令使用
|
弹性计算 域名解析 网络协议
阿里云万网注册域名---新手详细教程(图文)
新手阿里云万网域名注册详细图文教程 今天我给大家介绍一下域名是怎么注册和使用的。
|
10月前
|
存储 缓存 算法
1.3 Java一维数组:数组长度和常用属性
1.3 Java一维数组:数组长度和常用属性
262 0
|
10月前
|
Linux 计算机视觉 iOS开发
使用ffmpeg将MP4转换为WebM格式
使用ffmpeg将MP4转换为WebM格式
952 2
|
安全 JavaScript 前端开发
5个除了docker之外的轻量级容器
5个除了docker之外的轻量级容器
542 0
|
弹性计算 Windows
在ECS上使用Windows “跨区卷”、“条带卷”讨论以及扩容操作
针对Windows动态磁盘的特殊使用场景,进行了一些讨论和实践。 结论,不推荐使用非“简单卷”形式的动态磁盘
3212 0

热门文章

最新文章