如何在 Ubuntu Linux 上为你的网站设置 SSL(https) - 双向 SSL

如何在 Ubuntu Linux 上为你的网站设置 SSL(https) - 双向 SSL

我有一个网站,主要要求是使用 https 确保该网站的安全

当客户端从另一台机器访问时,只有证书已上传到浏览器设置中,它才可以工作。如果没有,它应该拒绝访问该网站。有人能帮我实现这个吗?

我正在使用 Ubuntu 14.04,如果你们需要更多详细信息请告诉我

答案1

Apache 的官方文档(参见此链接) 在这个问题上确实做得很好。

简而言之,你最终应该得到如下结果:

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost *:443>
   DocumentRoot /var/www/yoursite/
   <Directory /var/www/yoursite/>
     AllowOverride All
     order allow,deny
     allow from all
   </Directory>

   ServerName www.example.com
   SSLEngine on
   SSLCertificateFile /path/to/www.example.com.cert
   SSLCertificateKeyFile /path/to/www.example.com.key

   SSLVerifyClient require
   SSLVerifyDepth 1
   SSLCACertificateFile /path/to/www.example.com.ca.crt
</VirtualHost>

上述内容的一些细节

  • LoadModule ... :加载适当的 Apache 模块,包含 SSL 实现
  • 监听 443 :Apache 守护进程将监听标准 HTTPS 端口 443
  • DocumentRoot :你的网站文件所在的位置
  • ...:这是您网站目录选项的定义(还有很多,这里提到的是允许从互联网上的任何 IP 访问的基本选项)。
  • ServerName :仅提供包含此名称的 URL
  • SSLEngine on:激活此网站上的 SSL 功能。
  • SSLCertificateFile:为此服务器创建的私钥的 X.509 证书的路径。
  • SSLCertificateKeyFile:为此服务器创建的私钥的路径。
  • SSLVerifyClient require :强制服务器向客户端请求有效证书
  • SSLVerifyDepth 1 :必须由下一条说明中提到的 CA 直接签名
  • SSLCACertificateFile:路径为签署客户端使用的证书的 CA 的 X.509 证书。

证书

您必须获取有效的证书,一个用于您的服务器,其他多个用于客户端。

对于服务器
安装OpenSSL工具,如果尚未完成:sudo apt-get install openssl

使用此工具,您可以创建服务器的私钥:

openssl genrsa -des3 -out server.pass.key 2048

上述命令创建一个带有密码的私钥。要让服务器自动加载,您必须删除密码:

openssl rsa -in server.pass.key -out server.key

您现在在一个文件中有一个有效的服务器私钥,这是SSLCertificateKeyFileApache 指令指向的文件。

通过此私钥,您将创建一个证书签名请求(CSR):

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

系统将提示您输入一组元素(国家/地区、组织等)。其中最重要的是通用名称 (CN),它必须与您的 Web 服务器的主机名(即 URL 中使用的主机名)匹配。因此,在我的示例中,它是www.example.com

然后,您必须将此 CSR 文件提交给您的证书提供商。任何公共 CA 都可以。在他们批准您的请求后,他们会向您发送您服务器的著名 X.509 证书文件。ApacheSSLCertificateFile的指令将指向此文件。

对于客户
您还必须向客户提供有效证书。
根据客户端类型(Linux、Windows、MAC 等),流程可能有所不同。

有时,对于客户端证书,所有操作都可以通过访问 CA 注册页面直接从 Web 浏览器完成。如果直接从 Web 浏览器完成,那么您可以确保证书会自动注册到 Web 浏览器的证书数据库中。

如果通过外部方式完成(如openssl在 Linux 上,您必须将私钥和证书文件导入到 Web 浏览器的证书存储中。

相关内容