当前位置:首页 > Web开发 > 正文

在客户机的host文件中配置域名与IP的映射

2024-03-31 Web开发

标签:

博客搬场: https搭建(自签名证书)

上一篇博客探究了https(ssl)的道理,为了贯彻理论落实于实践的宗旨,本文将记录我搭建https的实操流程,使用Apache2+ubuntu+opensssl

1.使用自签证书配置https

一般来讲,正式的上线项目都需要采办域名,并且向权威机构申请证书。但本次事情属于测试环境,所以一切从简,我们使用openssl工具生自签名的CA证书以及处事器证书,来搭建https。具体法式如下:

(1)安置apache2、openssl(ubuntu16.04)

安置过程此处不做赘述,很简单。Apache2安置完成并启动后,通过 来测试,如下图所示,说明安置告成

技术图片

(2)制作证书 生成自签CA证书

生成CA私钥

openssl genrsa -out ca.key 2048

生成CA证书

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config /etc/ssl/openssl.cnf

openssl.cnf的路径注意填对。最后在当前目录下生成的ca.key即为CA私钥,ca.crt即为CA证书(包罗CA公钥)

生成处事器证书

生成处事器私钥

openssl genrsa -out server.key 2048

生成处事器签署申请文件

openssl req -new -out server.csr -key server.key -config /etc/ssl/openssl.cnf

需要填写处事器信息,如实填写即可。需要注意Common Name 需要与openssl.cnf 中配置的域名相对应(alt_names),否则客户端无法验证。该命令最后生成的server.csr即为申请文件。openssl.cnf的具体配置见下文。

在签署证书之前需要确认openssl.cnf中的配置,如下所示:

#按照实际情况改削,将match改成optional,否则ca.crt必需与server.csr中的各个字段值一致才华签署 [ policy_match ] countryName = optional stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional # 确保req下存在以下2行(默认第一行是有的,第2行被注释了) [ req ] distinguished_name = req_distinguished_name req_extensions = v3_req # 确保req_distinguished_name下没有 0.xxx 的标签,有的话把0.xxx的0. 去失 [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = XX countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) localityName_default = Default City organizationName = Organization Name (eg, company) organizationName_default = Default Company Ltd organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, your name or your server\'s hostname) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 #添加一行[email protected]_names [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [email protected]_names #新增alt_names,注意括号前后的空格,DNS.x 的数量可以本身加 #如果没有IP这一项,浏览器使用IP访谒时验证无法通过 [ alt_names ] IP.1 = 192.168.50.115 DNS.1 = dfe.leida.org DNS.2 = ex.abcexpale.net

使用CA证书和私钥签署处事器证书

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config /etc/ssl/openssl.cnf

直接运行该签署命令,会报错,提示缺少某些文件和目录。在当前目录下把相应的文件及文件夹创建上即可解决,如下

mkdir -p demoCA/newcerts touch ./demoCA/index.txt ./demoCA/serial echo "01">> ./demoCA/serial

创建完毕后,运行签署命令即可完成处事器证书的制作。当前目录下生成的server.crt即为处事器证书,server.key为处事器私钥

(3)配置apache2

启用ssl模块(此处可使用a2enmod命令)

a2enmod ssl

启用ssl站点

a2ensite default-ssl

插手监听端口443(因为https默认给与443端口,有别于http的80)

listen 80 443 # /etc/apache2/ports.conf中改削成如上所示即可

配置证书以及私钥的路径

SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key # 在/etc/apache2/sites-available/default-ssl.conf中改削如上参数,确认证书和私钥的路径正确无误

重启apache2,搞定!

2.使用浏览器测试https

上述的制作证书法式,已经是我测试结束、爬完坑后的正确教程,下文则是填坑记录。

实际上,我一开始凭据网上的要领搭建完https后,呈现过一些问题。使用浏览器访谒https://ipaddress 会跳出如下提示界面

技术图片


实际上此时浏览器已获取随处事器证书server.crt,只是由于某些原因无法验证它。若选择高级选项中的“继续浏览”时,同样可以正常跳转至对应的页面,这时相当于强行让浏览器接受该证书,同时接受处事器公钥。在测试环境下,这样完全OK。但是,强迫症的我还是想让导航栏上呈现安适的小锁,红叉叉看着很难受啊。

下面总结记录一下使用浏览器(chrome)测试的过程中遇到的问题以及解决要领

(1)客户端缺少CA证书

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/33199.html