在计算机领域,OpenSSL是一个广泛使用的开放源代码的安全套接字层(SSL)协议库。它允许应用程序进行安全通信,防止窃听,并验证连接方的身份。OpenSSL主要应用于互联网的网页服务器上。

以下是一些与OpenSSL相关的关键词:

- CSR:证书签名请求文件,用于申请证书的前置条件。

- CRT:证书,由CA颁发的数字证书,用于证明服务器的身份。

- key:私钥,用于加密和解密数据。

OpenSSL的核心功能是通过加密传输时的数据来保证信息不被非法窃取,保护用户隐私。要使用OpenSSL,首先需要下载并安装它。在Linux系统中,可以通过以下命令下载并安装OpenSSL:

```bash

openssl下载–linux版

```

安装完成后,可以通过启动脚本来启动OpenSSL:

```bash

C:\Users\Gavin>start.bat

```

接下来,我们需要在D盘的key文件夹下生成一个密钥文件。可以使用以下命令生成私钥:

```bash

C:\Users\Gavin>openssl genrsa -des3 -out d:/key/server.key Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

```

然后,使用私钥创建待签名的证书,即公钥:

```bash

C:\Users\Gavin>openssl.exe req -new -key d:/key/server.key -out d:/key/pub.csr

```

接下来,依次输入国家、地区、城市、组织、组织单位、Common Name和Email。如果要支持HTTPS,Common Name应该与域名保持一致,否则会引起浏览器警告。最后,生成的文件如下:

```bash

C:\Users\Gavin>openssl.exe req -text -in d:/key/pub.csr -noout

```

至此,申请证书的准备工作已经完成。接下来,我们可以自建CA(证书颁发机构)。首先创建CA密钥:

```bash

C:\Users\Gavin>openssl.exe genrsa -out D:/key/gavinca.key 2048 #默认长度也是2048

```

然后生成CA待签名证书:

要生成CA根证书,您可以使用OpenSSL工具。请按照以下步骤操作:

1. 打开命令提示符或终端。

2. 使用以下命令创建一个新的证书签名请求(CSR):

```plaintext

C:\Users\Gavin>openssl.exe req -new -key d:/key/gavinca.key -out d:/key/gavinca.csr

```

3. 在接下来的提示中,输入相关信息以完成CSR的创建。这些信息包括国家代码、州/省名称、城市名称、组织名称等。如果某些字段没有提供值,可以保留为空。例如:

```plaintext

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 State or Province Name (full name) [Some-State]:cn Locality Name (eg, city) []:cn Organization Name (eg, company) [Internet Widgits Pty Ltd]:cn Organizational Unit Name (eg, section) []:cn Common Name (e.g. server FQDN or YOUR name) []:cn Email Address []:cn Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:cn An optional company name []:cn

```

4. 在完成CSR的创建后,您需要使用私钥对它进行签名以生成CA根证书。请运行以下命令:

```plaintext

C:\Users\Gavin>openssl.exe ca -config -in d:/key/gavinca.csr -out d:/key/gavinca_root.crt -notext -batch

```

请注意,您需要将``替换为您的OpenSSL配置文件的实际路径。这将生成一个名为`gavinca_root.crt`的CA根证书。

Users\Gavin> opensslexe x509 -req -in d:/key/gavinca.csr -extensions v3_ca -signkey d:/key/gavinca.key -out d:/key/gavinca.crt Warning: ignoring -extensions option without -extfile Certificate request self-signature ok subject=CN = cn, ST = gavin, L = cn, O = future, OU = cn, CN = cn, emailAddress = cn

实际上,我们的证书不需要存储到本地计算机,而是在浏览器的存储区会有相应的证书。以Edge为例,可以通过以下步骤进行设置和管理证书:

设置 -> 管理证书

所以,HTTPS的加密传输需要网站支持并申请CA证书。下面是申请CA证书的步骤:

1. 生成自己的私钥

2. 根据私钥生成公钥

生成该公钥需要携带一些信息。

3. 申请CA证书

模拟HTTPS加密流程:准备好密钥及证书。

服务器端准备:准备一个私钥。

```plaintext

C:\Users\Gavin>openssl genrsa -des3 -out d:/key/server.key Enter PEM pass phrase: #加密server.key Verifying - Enter PEM pass phrase:

```

根据私钥生成一个公钥,即待签名的证书。

```

C:Users\Gavin>openssl req -new -key d:/key/server.key -out d:/key/pub.csr

Enter pass phrase for d:/key/server.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 State or Province Name (full name) [Some-State]:SD Locality Name (eg, city) []:YTL Organization Name (eg, company) [Internet Widgits Pty Ltd]:YTL Organizational Unit Name (eg, section) []:YTL Common Name (e.g. server FQDN or YOUR name) []:TYL Email Address []:12345678@YTL.COM

Please enter the following extra attributes to be sent with your certificate request A challenge password []:1234 An optional company name []:YTL

```

请注意,生成的证书尚未获得认证,因此可能无效且不受信任。要使其有效,您需要对其进行签名,而无需依赖大型机构来认证。以下是CA认证和证书申请(CSR)过程的概述:

1. 准备CA的密钥:

```markdown

C:\Users\Gavin>openssl.exe genrsa -out d:/key/serverca.key 2048

```

2. 生成待签名的证书公钥:

使用您的私钥对CSR进行签名。首先,创建一个包含您想要使用的密钥和其他相关信息的CSR文件。然后,使用以下命令对其进行签名:

```markdown

C:\Users\Gavin>openssl.exe req -new -key d:/key/serverca.key -out server_ca.csr

```

3. 将签名后的证书颁发给您的客户端:

使用您的私钥对服务器证书进行签名。首先,使用以下命令从CSR文件中提取信息:

```markdown

C:\Users\Gavin>openssl.exe x509 -in server_ca.csr -text -noout

```

提取的信息将用于创建服务器证书。然后,使用以下命令对证书进行签名:

```markdown

C:\Users\Gavin>openssl.exe x509 -req -days 3650 -in server_ca.csr -CAkey d:/key/client.crt -CAcreateserial -extfile extfile.cnf -extensions v3_ca -out server.crt

```

其中,`extfile.cnf`是一个包含证书颁发者、主题等信息的配置文件。例如:

```markdown

[ v3_ca ]

default_md = sha256

prompt = no

email_in_dn = no

policy = policy_match

countryName = Country Name (2 letter code)

stateOrProvinceName = State or Province Name (full name)

localityName = Locality Name (eg, city)

organizationName = Organization Name (eg, company)

organizationalUnitName = Organizational Unit Name (eg, section)

commonName = Common Name (e.g. server FQDN or YOUR name)

emailAddress = emailAddress "," emailAddress ..."

IPAddress = IP Address / (eg, IP Address 192.168.0.1)

DNSName = DNS Name (FQDN or server name) (eg, www.example.com)

```

4. 将颁发给客户端的证书添加到您的Web服务器配置中。具体操作方法取决于您使用的Web服务器软件。

请根据以下内容完成重构,并保持段落结构:

C:\UsersGavin> openssl.exe req -new -key d:/key/serverca.key -out d:/key/serverca.csr

您将被要求输入一些信息,这些信息将包含在您的证书请求中。您即将输入的内容被称为“可分辨名称”(Distinguished Name,简称DN)。尽管有许多字段,但您可以保留一些为空。对于某些字段,将有一个默认值。如果您输入“.”,则该字段将留空。

----- Country Name (2 letter code) [AU]:USA

String too long, must be at most 2 bytes long

Country Name (2 letter code) [AU]:UK

State or Province Name (full name) [Some-State]:LD

Locality Name (eg, city) []:LD

Organization Name (eg, company) [Internet Widgits Pty Ltd]:LD

Organizational Unit Name (eg, section) []:LD

Common Name (e.g. server FQDN or YOUR name) []:KD

Email Address []:LDLDKD@haha.com

Please enter the following 'extra' attributes to be sent with your certificate request:

A challenge password []:1234

An optional company name []:LD

以下是重构后的内容:

```

C:\Users\Gavin>openssl.exe x509 -req -in d:/key/pub.csr -extensions v3_req -signkey d:/key/serverca.key -out d:/key/server.crt

Warning: ignoring -extensions option without -extfile

Certificate request self-signature ok

subject=C = CN, ST = SD, L = YTL, O = YTL, OU = YTL, CN = TYL, emailAddress = 12345678@YTL.COM

#x509 协议 ,days 有效期 -req 请求 ---即由服务器的公钥要经过ca的私钥serverca.key ca公钥(证书) 认证(加密/解密)生成 经过认证的证书

再看CA颁发的证书—即服务器证书经过CA认证后的

有了证书之后,还需要注册到系统中

安装证书即可;

再次查看证书状态

至此证书申请和认证完毕;

https 加密的使用

注意:Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则依旧会引起浏览器警告。

CA证书的应用---->> 如果网站要对外提供服务就需要对网站进行认证

```