利用OpenSSL创建自签名的SSL证书

本文详细介绍了在Linux服务器上使用OpenSSL工具创建SSL证书的过程,包括创建根证书和网站SSL证书的具体步骤,以及如何解决客户端信任根证书的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来想使用Windows下的makecert实用工具创建的,结果折腾了很久导入到Linux服务器上,服务器没有正确识别,遂放弃,转而使用OpenSSL,收集了网上的一些材料,通过下面的方法创建成功:

1. SSH登录到服务器,使用下述命令创建根证书的私匙:

openssl genrsa -out ca.key 2048

网上很多是使用了1024,我这里强度加强到了2048。

2. 利用私钥创建根证书:

openssl req -new -x509 -days 36500 -key ca.key -out ca.crt -subj \"/C=CN/ST=Jiangsu/L=Yangzhou/O=Your Company Name/OU=Your Root CA"

这 里/C表示国家(Country),只能是国家字母缩写,如CN、US等;/ST表示州或者省(State/Provice);/L表示城市或者地区 (Locality);/O表示组织名(Organization Name);/OU其他显示内容,一般会显示在颁发者这栏。

到这里根证书就已经创建完毕了,下面介绍建立网站SSL证书的步骤:

3. 创建SSL证书私匙,这里加密强度仍然选择2048:

openssl genrsa -out server.key 2048位

4. 利用刚才的私匙建立SSL证书:

openssl req -new -key server.key -out server.csr -subj \"/C=CN/ST=Jiangsu/L=Yangzhou/O=Your Company Name/OU=wangye.org/CN=wangye.org"

这里需要注意的是,/O字段内容必须与刚才的CA根证书相同;/CN字段为公用名称(Common Name),必须为网站的域名(不带www);/OU字段最好也与为网站域名,当然选择其他名字也没关系。

5. 做些准备工作:

mkdir demoCAcd demoCAmkdir newcertstouch index.txtecho '01' > serialcd ..

注意cd ..,利用ls命令检查一下是不是有个demoCA的目录。

6. 用CA根证书签署SSL自建证书:

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

接下来有一段提示,找到Sign the certificate? [y/n]这句,打入y并回车,然后出现out of 1 certificate requests certified, commit? [y/n],同样y回车。

好了,现在目录下有两个服务器需要的SSL证书及相关文件了,分别是server.crt和server.key,接下来就可以利用它们配置你的服务器软件了。

需要注意的是由于是自签名证书,所以客户端需要安装根证书,将刚才第2步创建的根证书ca.crt下载到客户端,然后双击导入,否则会提示不受信任的证书发布商问题。

通常情况下私人或者内部用的话,自建证书已经绰绰有余了,但是如果你的产品面向的是大众,那就花点银子去买正规的SSL证书吧,可不能学某售票系统强制要求安装自建的根证书哦。


转载于:https://my.oschina.net/wayhk/blog/491958

在保护服务器通信安全方面,使用OpenSSL创建自签名SSL证书并将其部署到Nginx服务器是一个常见但关键的操作。为了解决这个问题,建议参考《OpenSSL实战指南:透彻解析与常用命令》,这本官方推荐的书籍由安全专家Ivan Ristić撰写,它提供了全面的指南和实用的命令行操作示例。 参考资源链接:[OpenSSL实战指南:透彻解析与常用命令](https://wenku.youkuaiyun.com/doc/1bhic9kwmy?spm=1055.2569.3001.10343) 首先,创建自签名SSL证书的步骤如下: 1. 打开终端或命令行界面。 2. 使用openssl命令生成私钥。命令格式为:`openssl genrsa -out server.key 2048`,其中`server.key`是生成的私钥文件名,`2048`是密钥的长度。 3. 利用生成的私钥创建CSR(证书名请求)。命令格式为:`openssl req -new -key server.key -out server.csr`,系统会提示你输入公司信息和其他证书详情。 4. 最后,使用CSR和私钥生成自签名SSL证书。命令格式为:`openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt`,其中`server.crt`是生成的证书文件名,`365`代表证书的有效期限(天数)。 接下来,将证书部署到Nginx服务器的步骤如下: 1. 配置Nginx以使用SSL。在Nginx的配置文件(通常位于`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/default`)中,指定证书和密钥的路径。例如: ``` server { listen 443 ssl; server_***; ssl_certificate /path/to/your/server.crt; ssl_certificate_key /path/to/your/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; location / { # ... } } ``` 2. 确保Nginx配置文件无误后,重载Nginx服务使配置生效。通常使用命令:`sudo nginx -s reload`。 3. 访问你的网站,检查是否能够通过HTTPS成功访问。 通过以上步骤,你将成功地创建一个自签名SSL证书,并将其部署到Nginx服务器上,以启用安全的HTTPS访问。为了进一步加强你的网络安全知识,推荐继续阅读《OpenSSL实战指南:透彻解析与常用命令》,它不仅涵盖了生成和管理证书的细节,还包括了网络安全的其他高级主题,帮助你建立更强大的防御机制。 参考资源链接:[OpenSSL实战指南:透彻解析与常用命令](https://wenku.youkuaiyun.com/doc/1bhic9kwmy?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值