Code前端首页关于Code前端联系我们

Linux+Apache+OpenSSL 实现一个证书服务器,提供 HTTPS 服务

terry 2年前 (2023-09-28) 阅读数 58 #未命名

Linux+Apache+OpenSSL 实现一个 SSL(Secure Socket Layer)证书服务器,提供安全的 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)服务。

安装 SSL

1。安装 openssl

tar -zxvf openssl-0.9.8a.tar.gz

cd openssl-0.9.8a

./configure

sl 已安装 /make

make install usr/local/ ssl 目录

2。安装 apache

tar -zxvf httpd-2.0.55.tar.gz

cd httpd-2.0.55

。 /configure –prefix=/usr/local/apache –enable-ssl –enable-rewrite –enable-so –with-ssl=/usr/local/ssl

make

make install

apache已安装

以上是通过源码安装在 usr/local/apache 目录中的。最好的安装方式是安装 rpm。首先安装 apache rpm,然后安装 openssl rpm。 openssl可以自动安装在apache目录下。

证书简介

SSL安全证书可以自行生成,也可以由第三方CA(证书颁发机构)付费颁发。

SSL 安全证书包括:

1。 CA 证书,也称为根证书或中间证书。单向认证https,CA证书可选。主要目的是将证书变成证书链,以便浏览器可以信任该证书。如果使用CA证书,则服务器证书和客户端证书均由CA证书签名。如果不安装CA证书,浏览器默认是不安全的。

2。服务器证书。必需的。使用服务器的私钥生成证书请求的CSR文件,然后使用CA的证书签名生成服务器的证书。

3. 客户证明。选修的。如果有客户端证书,则为双向身份验证的 HTTPS,否则为单向身份验证的 HTTPS。生成步骤与服务器证书类似。

您可以自行创建以上所有证书。在商业上,您通常将私钥和证书请求 CSR 提交到服务器或客户端证书端,并付费给第三方组织来请求服务器证书和 CA 签名的客户端证书。

创建证书

使用openssl提供的工具对证书进行签名。证书放置在 /usr/local/apache2/conf/ 目录中。首先复制工具:

cp /usr/share/ssl/misc/ /usr/local/apache2/conf/

1。 CA证书(根证书/中间证书)

由CA证书颁发机构颁发。如果是双向认证,则为必填项,否则为可选项。通过CA证书,形成一个证书链,让浏览器信任你的证书。如果使用 CA 证书,请使用它来签署服务器和客户端证书以实现浏览器信任目的。

自行生成CA证书步骤:

./ –newca

按Enter键创建新文件,输入加密密码并输入证书信息:

国家名称(2个字母代码) ) ) [AU]:CN

州或省名称(全称) [Some-State]:广东

地名(例如城市)[]:深圳

组织名称(例如公司)[Internet Widgits Pty Ltd]:xxx

组织单位名称(例如部门)[]:xxx

通用名称(例如您的姓名)[]:www.shenmiguo.com

电子邮件地址 []:xxx@ xxx.com

一般名称最好输入主机全名。该名称必须与通过浏览器访问您的网站所使用的 URL 完全相同,否则用户会发现您的服务器证书的 Common Name 与网站名称不匹配,用户会怀疑您的证书的真实性。服务器证书和客户端证书的通用名称应与CA一致。

生成结果:demoCA/private/是CA证书私钥文件,demoCA/是CA证书。

这就是CA服务器的创建方式。有了根证书和根证书私钥,现在可以用来签署服务器或客户端证书。

我们来规范一下CA证书的命名,将CA证书和密钥重命名为:

cp demoCA/private/ca.key

cp demoCA/

ca.key是中间证书的私钥,是中级证书。

2。服务器证书

a) 生成服务器私钥

openssl genrsa -des3 -out 1024

输入加密密码,使用128位rsa算法生成密钥并获取文件。

b) 生成服务器证书请求 (CSR)

openssl req -new -key -out server.csr

CSR(证书签名请求)是证书签名请求。在申请证书之前,您必须首先在线创建证书。在服务器上生成 CSR 并将其提交给 CA,然后 CA 才能向您颁发 SSL 服务器证书。可以这样想,CSR 是在您的服务器上生成的证书。 CSR 主要包含以下内容:

国家名称(两字母代码)[AU]:CN

州或省名称(全名)[Some-State]:广东

地名(例如城市) ) [ ]:深圳

组织名称(例如公司) [Internet Widgits Pty Ltd]:xxx

组织单位名称(例如部门)[]:xxx

通用名称(例如您的姓名)[ ]: shenmiguo .com

电子邮件地址[]:xxx@xxx.com

请输入以下“附加属性”

将您的证书请求发送给with

质询密码 []:

可选公司名称 []:

通用名称 输入与 CA 对应的主机名。

c) 自行生成服务器证书

如果不使用CA证书签名,则按如下方式生成:

openssl req -x509 -days 1024 -key -in server.csr >

使用服务器密钥和证书请求生成证书,-days 参数指定证书的有效期(以天为单位)。从商业角度来说,服务器证书是由第三方证书颁发机构颁发的。

如果使用CA证书签名,请使用openssl提供的工具生成服务器证书:

mv server.csr newreq.pem

./ -sign

mv newcert.pem

签署证书后,您将获得服务器证书,可以使用以下命令查看内容:

Opensl x509 -NOOUT -Text -IN

您可以使用以下命令查看服务器证书:

Opensl Check -CAFILE

3. 客户端证书

客户端的客户端证书是可选的。如果存在客户端证书,则为双向身份验证 HTTPS,否则为单向身份验证 HTTPS。

a) 生成客户端私钥

openssl genrsa -des3 -out client.key 1024

b) 生成客户端证书签名请求

openssl req -new -key client.key -out client. c) 生成客户端证书(由 CA 证书签名)

openssl ca -in client.csr -out client.crt

d) 将证书转换为浏览器可识别的格式

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

4。证书列表

使用双向身份验证时,有三个私钥和三个证书。它们是 ca.key、、、、client.key、c​​lient.crt 和浏览器。

如果使用 CA 证书进行单向身份验证,则证书和私钥为 ca.key, , , 。

如果您使用没有 CA 证书的单向身份验证,则证书和私钥为 , 。

配置证书

Apache的标准做法是在对应的配置文件中配置扩展配置,直接包含一个包含各个功能配置的conf文件(例如php相关的配置称为到 ssl 被称为)。这样做的优点是配置易于管理和更改,并且仍然可以保持简单明了。

1。设置

包括conf/

2。设置

基本配置包括证书路径和身份验证策略:

监听 443 #https 端口

SSLRandomSeed 启动内置

SSLPassPhraseDialog 内置

s SSLSessionCacheTimeout 300

SSLMutex 默认值

ServerAdmin

DocumentRoot /usr/local/apache2/htdocs/

#DirectoryIndex digitalidCenter3.com4nSverName

ErrorLog 日志 /443-error_log

CustomLog /usr/ local/apache2/logs /ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

❝ 信息

SSLEngine在

SSLCipherSuite 全部:! ADH:!EXPORT56:RC4+RSA:+HIGH:+MID:+LOW:+SSLv2:+EXP:+eNULL

SSLCertificateFile /usr/local/apache2/conf// # 设置服务器证书路径

SSLCertificateKeyFile /usr/local/apache2/conf// # 服务器证书私钥路径

SSLCertificateChainFile /usr/local/apache2/conf// #CA 中间证书路径

SSLCACertificatePath /usr/pache2 客户端证书目录(仅使用)用于双向认证)

SSLCACertificateFile /usr/local/apache2/conf//client.crt # 客户端证书路径(仅用于双向认证)

SSLVerifyClient require # 强制客户端持有 SSL 证书 Request

SSLVerifyDepth 10

有关 mod_ssl 配置选项的详细说明,请参阅 apache 文档:://。 linux.gov.cn/Apache/ApacheMenu/mod/mod_ssl.html

3.启动Apache

cd /usr/local/apache2/bin

./apachectlstartsssl

要启动Apache,可以修改apachectl脚本并将其更改为默认的ssl模式。在 Apachectl 脚本中:

start|stop|restart |graceful)

$HTTPD -k $ARGV

ERROR=$?

;;

startsL)

startsl)||start- 开始l)| $HTTPD -k start -DSSL

ERROR=$?

;;

更改为:

stop|graceful)

$HTTPD -k $ARGV$

;;

重新启动)

killall -9 httpd

$HTTPD -k start -DSSL

;;

start |startsl|s$HTTP --- k start -DSSL

错误=$?

;;

启动时必须输入密码。存储可以用服务器私钥解密,重启时无需输入密码:

openssl rsa -in -out my-

chmod 400

Startup

已更改。 to:

SSLCertificateKeyFile /usr/local/apache2/conf//my- # 解密服务器证书的私钥路径。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门