如何在centos下给nginx和apache自签名证书实现https

如何在centos下给nginx和apache自签名证书实现https

如何在centos下给nginx和apache自签名证书实现https

TLS或传输层安全性,以及它的前身SSL(代表安全套接字层)是用于在受保护的加密包装器中包装正常通信的Web协议。
使用这项技术,服务器可以在服务器和客户机之间安全地发送流量,而不可能被外部各方拦截消息。证书系统还帮助用户验证他们所连接的站点的身份。
在本指南中,我们将向您展示如何设置用于CentOS 7服务器上的nginx 和apache Web服务器的自签名SSL证书。

注意:自签名证书将加密服务器和任何客户机之间的通信。但是,由于它没有由Web浏览器中包含的任何受信任的证书颁发机构签名,因此用户无法使用该证书自动验证服务器的身份。

先决条件

首先,您应该有一个配置了sudo特权的非根用户。您可以按照我们针对CentOS 7的初始服务器设置来了解如何设置这样的用户帐户。
准备好开始时,以sudo用户的身份登录到服务器。

centos 7服务器已经安装好了nginx和apache

第一步创建证书

TLS/SSL通过使用公共证书和私钥的组合来工作。SSL密钥在服务器上是保密的。它用于加密发送到客户端的内容。SSL证书与请求内容的任何人公开共享。它可以用来解密由相关的SSL密钥签名的内容。

可以用来保存公共证书的/etc/ssl/certs目录应该已经存在于服务器上。我们也创建一个/etc/ssl/private目录来保存私钥文件。由于此密钥的保密性对安全至关重要,我们将锁定权限以防止未经授权的访问:

sudo mkdir /etc/ssl/private
sudo chmod 700 /etc/ssl/private

接下来创建证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

让我们先看看我们发出的命令中发生了什么:
OpenSSL:这是创建和管理OpenSSL证书、密钥和其他文件的基本命令行工具。
req:此子命令指定我们要使用X.509证书签名请求(CSR)管理。“X.509”是一个公共密钥基础结构标准,SSL和TLS坚持用于密钥和证书管理。我们想要创建一个新的X.509证书,所以我们使用这个子命令。
-X509:这进一步修改了前面的子命令,告诉实用程序我们希望生成自签名证书,而不是像通常那样生成证书签名请求。
-nodes:这告诉OpenSSL跳过使用密码短语保护证书的选项。当服务器启动时,我们需要nginx能够在无需用户干预的情况下读取文件。密码将阻止这种情况的发生,因为我们必须在每次重新启动后输入密码。
-days 365:此选项设置证书被视为有效的时间长度。我们在这里定了一年。
-new key rsa:2048:这指定我们希望同时生成一个新证书和一个新密钥。我们没有创建在上一步中签署证书所需的密钥,因此我们需要与证书一起创建它。rsa:2048部分告诉它生成一个2048位长的rsa密钥。
-keyout:这一行告诉opensl在哪里放置我们正在创建的生成的私钥文件。
-out:这会告诉OpenSSL将要创建的证书放在哪里。
如上所述,这些选项将创建密钥文件和证书。为了将信息正确地嵌入到证书中,我们将询问一些关于服务器的问题。
适当地填写提示。最重要的一行是请求公用名的行(例如,服务器fqdn或您的名称)。您需要输入与您的服务器或服务器的公共IP地址关联的域名。
执行命名后,系统会提示输入一些信息,整个提示将如下所示:

Output
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:SHANGHAI
Locality Name (eg, city) []:SHANGHAI
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SHANGHAI, Inc.
Organizational Unit Name (eg, section) []:IT DEP
Common Name (e.g. server FQDN or YOUR name) []:test.bfw.wiki
Email Address []:admin@bfw.wiki

第二步修改配置

修改nginx.conf

server {
    listen 443;
    server_name  test.bfw.wiki;
    ssl on;
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

   location / {
     root /var/www/vhosts/test.bfw.wiki/;
     index  index.html index.htm;
   }
}

ok,重启一下nginx就ok了

如果是apache的话,修改httpd.conf

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/nginx-selfsigned.crt
    SSLCertificateKeyFile /etc/ssl/private/nginx-selfsigned.key
    <Directory /var/www/vhosts/test.bfw.wiki>
        AllowOverride All
    </Directory>
    DocumentRoot /var/www/vhosts/test.bfw.wiki
    ServerName test.bfw.wiki
</VirtualHost>

Ok,重启一下apache就好了


{{collectdata}}

网友评论0