[网站]_[初级]_[配置Apache支持https访问-自签名证书还是提示错误的问题]
Posted infoworld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[网站]_[初级]_[配置Apache支持https访问-自签名证书还是提示错误的问题]相关的知识,希望对你有一定的参考价值。
场景
- 现在的网站基本都是需要支持
https
,不然会被谷歌系浏览器给出以下警告. 虽然可以点击继续前往
,但是如果跳转到这个网站的其他页面又会有相同的警告,导致打开网页失败,总不能一个个页面去点继续前往
。怎么处理?
您的连接不是私密连接
...
NET:ERR_CERT_AUTHORITY_INVALID
...
- 在给本地网站进行测试时,需要配置
https
支持,那么需要配置服务器证书,用于https
请求的加密。参考网上的文章配置的基本都是生成CA
私钥和Server
公钥的, 按照其做法还是出现您的连接不是私密连接
的问题。
说明
-
生成自签名的测试证书并不需要提交给
CA
进行认证. 只需要在客户端进行导入信任的证书即可。这里只介绍Windows
的证书导入,Linux
的应该是类似的。 -
生成密钥和证书的工具有
openssl.exe
, 以Apache
为例,可以在Apache24\\bin\\openssl.exe
找到这个工具。注意,这个Apache24
是Apache安装目录
。 关于下载Windows
版本的Apache
,可以单独下载Apache
的压缩包(绿色软件)[4]。也可以下载XAMPP
的打包好php+Apache+mysql
的集成安装包[5]。当然也可以去Apache Httpd
的官网点击important notes。 我下载的是绿色版的单独的httpd
压缩包,之后解压到某个目录。 -
生成自签名的证书,需要一个测试用的域名,比如
mysite1.com
, 访问本地网站的时候可以通过https://mysite1.com
来访问。可以修改这个例子域名指向我们的127.0.0.1
本地ip
. 通过修改C:\\Windows\\System32\\drivers\\etc\\hosts
,注意这个文件需要复制到桌面修改完之后再覆盖原文件,不然保存会失败。文件最后增加一行
127.0.0.1 mysite1.com
127.0.0.1 www.mysite1.com
-
需要在
Apache24\\conf\\openssl.cnf
里启用v3_req
扩展和增加一个关键属性配置subjectAltName
。-
启用
v3_req
扩展, 搜索文件里的内容v3_req
, 把#
注释去掉。req_extensions = v3_req # The extensions to add to a certificate request
-
在
[ v3_req ]
下增加以下的配置,主义,DNS.1
增加你的域名配置,如果需要只支持某个二级域名,那么可以可以代替*
符号, 比如shop.mysite1.com
。basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment # 以下是增加的 subjectAltName = @alt_names [ alt_names ] DNS.1 = *.mysite1.com DNS.2 = mysite1.com
-
-
生成私钥,公钥和证书的步骤如下,
Win+R
输入cmd
回车,进入命令行。之后进入Apache24\\bin
所在的目录,为了可以在命令行运行openssl.exe
生成ca.key
,server.key
和server.crt
3个文件。- 生成
CA
私钥:openssl genrsa -out ca.key 2048
- 生成
server
公钥openssl rsa -in ca.key -out server.key
- 生成证书
openssl req -new -subj "/CN=*.mysite1.com" -x509 -days 3650 -key server.key -out server.crt -config ../conf/openssl.cnf -extensions v3_req
- 生成
-
把生成的
server.crt
和servier.key
复制覆盖Apache24\\conf\\ssl\\
目目录下。并在你的Apache24\\conf\\extra\\httpd-ahssl.conf
下的VirtualHost
里增加启用SSLEngine
,并且配置使用这两个文件。注意:ServerName
的值要填测试域名mysite1.com
。
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
ServerName mysite1.com
...
</VirtualHost>
httpd-ahssl.conf
默认已经有配置好的htdocs
例子,可以直接修改ServerName
的值.
<VirtualHost _default_:443>
SSLEngine on
ServerName mysite1.com
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
DocumentRoot "${SRVROOT}/htdocs"
# DocumentRoot access handled globally in httpd.conf
CustomLog "${SRVROOT}/logs/ssl_request.log" \\
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \\"%r\\" %b"
<Directory "${SRVROOT}/htdocs">
Options Indexes Includes FollowSymLinks
AllowOverride AuthConfig Limit FileInfo
Require all granted
</Directory>
</virtualhost>
-
如果已经配置
SSL
好VirtualHost
的话,直接就加上上边4
行即可,如果没有配置SSL
扩展支持,那么还需要修改在Apache24\\conf\\httpd.conf
文件,有以下步骤:- 搜索相关
SSL/TLS
的模块配置位置,添加或去掉注释,我的httpd
是2.4.48
默认启用的.# Secure (SSL/TLS) connections # Note: The following must must be present to support # starting without SSL on platforms with no /dev/random equivalent # but a statically compiled-in mod_ssl. # <IfModule ssl_module> #Include conf/extra/httpd-ssl.conf Include conf/extra/httpd-ahssl.conf SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule>
- 同样,如果没有加载以下扩展,也要去掉注释启用。
LoadModule ssl_module modules/mod_ssl.so
- 配置正确的
SRVROOT
值为你的Apache httpd
的正确安装绝对路径,使用/
.Define SRVROOT "E:/software/Apache24/"
- 搜索相关
-
安装证书,以便浏览器能使用公钥进行签名. 双击
server.crt
,安装证书并选择把证书放入受信任的根证书颁发机构
。因为以上并没有申请第三方CA
颁发证书,所以我们把自己的证书作为根证书,这样浏览器就不会自下而上的去检查证书。
- 安装好证书之后,需要检查证书是否正确安装.
Windows
系统快捷键Win+R
, 输入certmgr.msc
回车, 检查受信任的根证书颁发机构
里有没有你颁发的对应网站的颁发者
.
- 双击
Apache24/bin/httpd.exe
启动Apache httpd
,之后通过https://mysite1.com
访问本地网站。如果启动有错误,可以看Apache24\\logs
下的error.log
文件查找原因。如果启动之后还是显示您的连接不是私密连接
,那么关闭浏览器重新打开。
其他
- 如果是发布的网站,那么需要获取权威机构颁发的证书,需要先得到私钥的
key
文件(.key),然后使用私钥的key
文件生成sign req
文件(.csr),最后把csr
文件发给权威机构,等待权威机构认证,认证成功后,会返回证书文件(.crt)
本地方式的:
openssl req -new -subj "/CN=local" -config ../conf/openssl.cnf -key ca.key -out ca.csr
需要提交认证的:
openssl req -new -config ../conf/openssl.cnf -key ca.key -out ca.csr
subjectAltName
指定了附加的主题标识,但用于主机名.。CN
只在subjectAltName
不存在且仅为了与旧的、不兼容的软件兼容时进行评估。因此,如果您设置了subjectAltName
,就必须将其用于所有主机名。
参考
以上是关于[网站]_[初级]_[配置Apache支持https访问-自签名证书还是提示错误的问题]的主要内容,如果未能解决你的问题,请参考以下文章