Rsh*_*rth 3 apache2 openssl 14.04
我有一个网站,主要要求是通过使用 https 使该网站安全
当客户端从另一台机器访问时,只有在浏览器设置中上传了证书才能工作。如果不是,它应该拒绝访问该网站。任何人都可以帮助我实现这一目标。
我正在使用 Ubuntu 14.04 如果您需要更多详细信息,请告诉我
事实证明,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>
Run Code Online (Sandbox Code Playgroud)
您将必须获得有效的证书,一个用于您的服务器,另一个用于客户端。
对于服务器
安装OpenSSL工具,如果还没有完成:sudo apt-get install openssl。
使用此工具,您可以创建服务器的私钥:
openssl genrsa -des3 -out server.pass.key 2048
Run Code Online (Sandbox Code Playgroud)
上面的命令创建一个带有密码的私钥。要由您的服务器自动加载,您必须删除密码:
openssl rsa -in server.pass.key -out server.key
Run Code Online (Sandbox Code Playgroud)
您现在在文件中有一个有效的服务器私钥,这是SSLCertificateKeyFileApache 指令指向的文件。
使用此私钥,您将创建证书签名请求 (CSR):
openssl req -nodes -new -key server.key -out server.csr
Run Code Online (Sandbox Code Playgroud)
系统将提示您输入一组元素(国家、组织、...)。最重要的是通用名称 (CN),它必须与您的网络服务器的主机名匹配,即 URL 中使用的主机名。所以在我的例子中是www.example.com。
然后,您必须将此 CSR 文件提交给您的证书提供商。任何公共 CA 都很好。在他们批准您的请求后,他们会将著名的 X.509 证书文件发送给您的服务器。该文件将由SSLCertificateFileApache 的指令指向。
对于客户,
您也必须向客户提供有效的证书。
根据客户端类型(Linux、Windows、MAC 等),该过程可能会有所不同。
有时,对于客户端证书,所有操作都可以通过访问 CA 注册页面直接从 Web 浏览器完成。如果直接从 Web 浏览器完成,那么您可以确定证书会自动注册到 Web 浏览器的证书数据库中。
如果通过外部方式(如Linux 上的openssl)完成,则必须将私钥和证书文件导入到 Web 浏览器的证书存储中。
| 归档时间: |
|
| 查看次数: |
26874 次 |
| 最近记录: |