`

linux上面ssl证书生成方法

 
阅读更多

一般情况下,如果能找到可用的证书,就可以直接使用,只不过会因证书的某些信息不正确或与部署证书的主机不匹配而导致浏览器提示证书无效,但这并不影响使用。

需要手工生成证书的情况有:

  1. 找不到可用的证书
  2. 需要配置双向SSL,但缺少客户端证书
  3. 需要对证书作特别的定制

首先,无论是在Linux下还是在Windows下的Cygwin中,进行下面的操作前都须确认已安装OpenSSL软件包。

1. 创建根证书密钥文件(自己做CA)root.key

openssl genrsa -des3 -out root.key

输出内容为:

[lenin@archer ~]$ openssl genrsa -des3 -out root.key 
Generating RSA private key, 512 bit long modulus 
……………..++++++++++++ 
..++++++++++++ 
e is 65537 (0×10001) 
Enter pass phrase for root.key: ← 输入一个新密码 
Verifying – Enter pass phrase for root.key: ← 重新输入一遍密码

2. 创建根证书的申请文件root.csr

openssl req -new -key root.key -out root.csr

输出内容为:

[lenin@archer ~]$ openssl req -new -key root.key -out root.csr 
Enter pass phrase for root.key: ← 输入前面创建的密码 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter ‘.’, the field will be left blank. 
—– 
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN 
State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音 
Locality Name (eg, city) []:BeiJing ← 市的全名,拼音 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
Organizational Unit Name (eg, section) []: ← 可以不输入 
Common Name (eg, YOUR name) []: ← 此时不输入 
Email Address []:admin@mycompany.com ← 电子邮箱,可随意填

Please enter the following ‘extra’ attributes 
to be sent with your certificate request 
A challenge password []: ← 可以不输入 
An optional company name []: ← 可以不输入

3. 创建一个自当前日期起为期十年的根证书root.crt

openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.req -out root.crt

输出内容为:

[lenin@archer ~]$ openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt 
Signature ok 
subject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompany Corp./emailAddress=admin@mycompany.com 
Getting Private key 
Enter pass phrase for root.key: ← 输入前面创建的密码

4. 创建服务器证书密钥server.key

openssl genrsa –des3 -out server.key 2048

输出内容为:

[lenin@archer ~]$ openssl genrsa -out server.key 2048 
Generating RSA private key, 2048 bit long modulus 
….+++ 
…………………………………………..+++ 
e is 65537 (0×10001)

运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施! 
去除key文件口令的命令: 
openssl rsa -in server.key -out server.key

5.创建服务器证书的申请文件server.csr

openssl req -new -key server.key -out server.csr

输出内容为:

[lenin@archer ~]$ openssl req -new -key server.key -out server.req 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter ‘.’, the field will be left blank. 
—– 
Country Name (2 letter code) [AU]:CN ← 国家名称,中国输入CN 
State or Province Name (full name) [Some-State]:BeiJing ← 省名,拼音 
Locality Name (eg, city) []:BeiJing ← 市名,拼音 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
Organizational Unit Name (eg, section) []: ← 可以不输入 
Common Name (eg, YOUR name) []:www.mycompany.com ← 服务器主机名,若填写不正确,浏览器会报告证书无效,但并不影响使用 
Email Address []:admin@mycompany.com ← 电子邮箱,可随便填

Please enter the following ‘extra’ attributes 
to be sent with your certificate request 
A challenge password []: ← 可以不输入 
An optional company name []: ← 可以不输入

6. 创建自当前日期起有效期为期两年的服务器证书server.crt

openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in server.csr -out server.crt

输出内容为:

[lenin@archer ~]$ openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in server.csr -out server.crt 
Signature ok 
subject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompany Corp./CN=www.mycompany.com/emailAddress=admin@mycompany.com 
Getting CA Private Key 
Enter pass phrase for root.key: ← 输入前面创建的密码

7. 创建客户端证书密钥文件client.key

openssl genrsa -des3 -out client.key 2048

输出内容为:

[lenin@archer ~]$ openssl genrsa -des3 -out client.key 2048 
Generating RSA private key, 2048 bit long modulus 
……………………………………………………………………………..+++ 
……………………………………………………………………………………………………….+++ 
e is 65537 (0×10001) 
Enter pass phrase for client.key: ← 输入一个新密码 
Verifying – Enter pass phrase for client.key: ← 重新输入一遍密码

8. 创建客户端证书的申请文件client.csr

openssl req -new -key client.key -out client.csr

输出内容为:

[lenin@archer ~]$ openssl req -new -key client.key -out client.csr 
Enter pass phrase for client.key: ← 输入上一步中创建的密码 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter ‘.’, the field will be left blank. 
—– 
Country Name (2 letter code) [AU]:CN ← 国家名称,中国输入CN 
State or Province Name (full name) [Some-State]:BeiJing ← 省名称,拼音 
Locality Name (eg, city) []:BeiJing ← 市名称,拼音 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名 
Organizational Unit Name (eg, section) []: ← 可以不填 
Common Name (eg, YOUR name) []:Lenin ← 自己的英文名,可以随便填 
Email Address []:admin@mycompany.com ← 电子邮箱,可以随便填

Please enter the following ‘extra’ attributes 
to be sent with your certificate request 
A challenge password []: ← 可以不填 
An optional company name []: ← 可以不填

9. 创建一个自当前日期起有效期为两年的客户端证书client.crt

openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in client.csr -out client.crt

输出内容为:

[lenin@archer ~]$ openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in client.csr -out client.crt 
Signature ok 
subject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompany Corp./CN=www.mycompany.com/emailAddress=admin@mycompany.com 
Getting CA Private Key 
Enter pass phrase for root.key: ← 输入上面创建的密码

10. 将客户端证书文件client.crt和客户端证书密钥文件client.key合并成客户端证书安装包client.pfx

openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx

输出内容为:

[lenin@archer ~]$ openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx 
Enter pass phrase for client.key: ← 输入上面创建的密码 
Enter Export Password: ← 输入一个新的密码,用作客户端证书的保护密码,在客户端安装证书时需要输入此密码 
Verifying – Enter Export Password: ← 确认密码

11. 保存生成的文件备用,其中server.crtserver.key是配置单向SSL时需要使用的证书文件,client.crt是配置双向SSL时需要使用的证书文件,client.pfx是配置双向SSL时需要客户端安装的证书文件

     .crt文件和.key可以合到一个文件里面,把2个文件合成了一个.pem文件(直接拷贝过去就行了)

分享到:
评论

相关推荐

    Linux 生成SSL证书 供 nginx使用

    Linux 生成 SSL 证书供 nginx 使用是指通过 OpenSSL 命令生成 SSL 证书的过程,这个过程包括生成私钥、证书请求文件、证书文件和配置 nginx 使用证书。 首先,生成私钥文件使用以下命令:`openssl genrsa -des3 -...

    本地ssl证书生成工具

    SSL(Secure Sockets Layer)证书是互联网安全领域的重要组成部分,用于加密用户与服务器之间的通信,确保数据在传输过程...理解SSL证书的工作原理和生成方法对于任何涉及网络通信安全的IT专业人员来说都是至关重要的。

    私有ssl证书生成器,自动根据域名生成私有证书

    linux下,私有ssl证书生成器,通过提示的方式,自动根据域名生成私有ssl证书,包括crt,key

    SSL证书生成脚本文件

    下载该证书,执行脚本,会生成证书文件。亲测有效

    Linux环境cer证书生成和转码方式参考.doc

    与自签名证书生成类似,使用`openssl req`创建公钥证书: ``` openssl req -new -x509 -key test_cert.key -out x509_public.cer -days 365 -subj "/CN=***.website/CN=***.website" ``` 在实际应用中,这些...

    自己颁发SSL证书浏览器不识别解决方法.docx

    Linux平台下的SSL证书应用包括使用OpenSSL生成证书、使用Apache或Nginx服务器配置SSL证书等。 【SSL证书的优点】 SSL证书的优点包括提高网站的安全性、保护用户的隐私、提高搜索引擎优化等。SSL证书可以确保数据的...

    Tomcat SSL 认证设置及证书自己生成

    keytool是Java提供的命令行工具,用于管理JDK的密钥库,也可以用于生成和管理SSL证书。 **自签发CA证书** 1. 首先,你需要使用OpenSSL生成一个私钥(private key)和证书签名请求(CSR)。私钥将被用于解密通过SSL...

    linux系统生成证书指令

    在Linux环境下,为了确保网络通信的安全性,经常需要为服务器或应用程序生成SSL/TLS证书。本文将详细介绍如何利用`openssl`命令来生成私钥、证书请求文件及最终的证书文件,并且提供如何将这些文件合并成一个PFX格式...

    Nginx配置SSL自签名证书的方法

    首先,我们需要生成自签名SSL证书。这通常包括以下步骤: 1. **生成RSA密钥**:使用`openssl genrsa`命令创建一个带有密码保护的RSA私钥。例如,`openssl genrsa -des3 -out domain.key 1024`将生成一个1024位的...

    SSL证书安装.zip

    - **准备证书**:与Apache类似,生成CSR并购买SSL证书。 - **配置Nginx**:编辑`nginx.conf`,在server块中定义SSL监听端口,指定证书和私钥文件路径。 - **重启Nginx**:更新配置后,重启Nginx服务以应用更改。 ...

    用openssl为apache制作ssl证书

    ### 使用OpenSSL为Apache生成SSL证书 #### 一、引言 随着互联网技术的发展与用户对数据安全意识的提升,HTTPS协议已经成为网站标配之一。HTTPS不仅能够加密传输数据,还能验证服务器身份,确保用户访问的是真实...

    基于SSL的linux下的例子

    以上就是基于SSL的Linux系统实现和证书生成的详细步骤。在整个过程中,OpenSSL库提供了必要的加密和身份验证功能,确保了C-S通信的安全性。在实际应用中,可能还需要考虑证书的更新、管理以及更高级的安全策略,例如...

    View 设置 SSL 证书的方案

    **使用 Microsoft Certreq 生成证书签名请求并获取证书** 1. **安装 IIS**:如果尚未安装 Internet Information Services (IIS),则需要先安装。 2. **创建 CSR(Certificate Signing Request)**: - 打开...

    Linux下用Openssl生成证书

    ### Linux下用OpenSSL生成证书 #### 一、概述 在现代互联网通信中,SSL/TLS协议被广泛应用于实现客户端与服务器之间的安全数据传输。为了确保这种通信的安全性,需要使用数字证书来验证服务器的身份。在Linux环境...

    Linux环境下证书的生成及使用方法.zip

    本文将深入探讨如何在Linux系统中利用OpenSSL工具生成和管理SSL/TLS证书,以及相关的加密概念。 首先,环境要求是必须在Linux系统上安装OpenSSL库。OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议...

    fiddler证书生成器

    8. **跨平台支持**: 虽然这里的讨论主要针对Windows环境,但Fiddler也支持Mac和Linux平台,证书生成和安装的过程类似,但具体步骤可能有所不同。 9. **其他用途**: Fiddler证书生成器不仅仅用于调试,还可以帮助...

    kettle中调用restful接口时的SSL信任证书问题

    这种方法通过在启动Kettle时设置特定的Java系统属性来信任所有SSL证书。这种方式简单快捷,适用于快速测试和开发环境。 - **操作步骤**: 1. **打开Kettle安装目录**:找到Kettle的安装目录。 2. **编辑启动脚本*...

    linux系统openssl 实现ssl自签证书

    总之,通过Linux系统和openssl工具,我们可以自行创建并签署SSL证书,实现局域网内的HTTPS通信,同时解决浏览器对于主题备用名称(SAN)缺失的警告。这个过程不仅适用于nginx,也可以应用于其他支持SSL的服务器软件...

    解决linux下访问https站点问题:证书无效.docx

    要解决这个问题,需要将该网站的证书公钥追加到 Linux 系统的证书库中。下面是详细的解决步骤: Step 1: 下载 CA 证书 可以通过扫描器拜访网站下载 CA 证书。例如,可以通过 OpenSSL 工具下载证书。 Step 2: 格式...

    ssl.rar_client ssl_linux s_ssl 程序_ssl server_证书

    在这个“ssl.rar_client ssl_linux s_ssl 程序_ssl server_证书”压缩包中,我们主要讨论的是Linux环境下SSL的客户端和服务器端的实现,以及涉及到的证书和私钥管理。 首先,SSL协议主要由两部分组成:握手协议和...

Global site tag (gtag.js) - Google Analytics