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

简介:

之前申请的StartSSL免费一年的证书到期了,考虑到我对SSL一般仅用于博客登录和后台管理上面,所以不打算续申请,自己创建一个就足够了。

本来想使用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 demoCA

cd demoCA

mkdir newcerts

touch index.txt

echo '01' > serial

cd ..

注意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证书吧,可不能学某售票系统强制要求安装自建的根证书哦。










本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/1660911,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
应用服务中间件 Linux 网络安全
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
Linux【脚本 06】HTTPS转发HTTP安装OpenSSL、Nginx(with-http_ssl_module)及自签名的X.509数字证书生成(一键部署生成脚本分享)
64 1
|
3月前
|
网络安全 开发工具 git
解决 OpenSSL SSL_read: Connection was reset, errno 10054的问题
解决 OpenSSL SSL_read: Connection was reset, errno 10054的问题
|
4月前
【Error】fatal: unable to access ‘https://github.com/PanJiaChen/vue-element-admin/‘: OpenSSL SSL_read:
【Error】fatal: unable to access ‘https://github.com/PanJiaChen/vue-element-admin/‘: OpenSSL SSL_read:
|
5月前
|
网络安全
20.8 OpenSSL 套接字SSL传输文件
有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入`1024`个字节的数据包,通过`SSL`加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。
34 0
20.8 OpenSSL 套接字SSL传输文件
|
5月前
|
开发工具 git
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
|
7月前
|
应用服务中间件 Linux 网络安全
CentOS7自签名SSL证书并给nginx配置https
CentOS7自签名SSL证书并给nginx配置https
187 0
|
开发工具 git
git 报错 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
git 报错 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
395 0
git 报错 OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
|
8月前
|
安全 网络协议 Shell
iOS 逆向编程(六) SSH、OpenSSH、SSL、OpenSSL 简介与关系
iOS 逆向编程(六) SSH、OpenSSH、SSL、OpenSSL 简介与关系
179 0
|
10月前
|
安全 JavaScript 网络安全
错误:写入 EPROTO 3928:错误:1408F10B:SSL 例程:ssl3_get_record:错误版本号:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332 #71
错误:写入 EPROTO 3928:错误:1408F10B:SSL 例程:ssl3_get_record:错误版本号:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332 #71
157 0
|
11月前
解决OpenSSL SSL_read: Connection was reset, errno 10054
解决OpenSSL SSL_read: Connection was reset, errno 10054
264 0