实现局域网https域名访问内网服务

栏目: 编程工具 · 发布时间: 6年前

内容简介:先实现本地可通过https及自定义域名访问到本地的服务,我的系统是MacOS,实现步骤如下:第一步是创建一个安全套接层(CA SSL)根证书。然后可以使用此根证书为可能为单个域生成的任意数量的证书签名。CA,Catificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。

先实现本地可通过https及自定义域名访问到本地的服务,我的系统是MacOS,实现步骤如下:

  1. 创建根ssl证书
  2. 信任证书
  3. 生成域ssl证书
  4. nginx使用证书并配置代理服务
  5. 本地修改hosts测试

1. 创建根SSL证书

第一步是创建一个安全套接层(CA SSL)根证书。然后可以使用此根证书为可能为单个域生成的任意数量的证书签名。

CA,Catificate Authority,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。

创建 root key,

$ openssl genrsa -des3 -out rootCA.key 2048
复制代码

这一步系统将提示您输入密码,每次使用此特定密钥生成证书时都需要输入该密码。

使用生成的密钥来创建新的根SSL证书。并将其保存为rootCA.pem。证书有效期为10年。在这一过程中,还将被提示输入其他可选信息。

$ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem
复制代码

提示填写的字段大多都可以直接回车过就行了,只要Common Name字段需要填写内容,这是生成跟证书后导入到系统的证书名称,我填的是Local Certification

Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:Local Certification
复制代码

2. 信任证书

打开【钥匙串访问】,左侧【钥匙串】选择【系统】,【种类】选择【证书】,然后把刚才生成的根证书导入进来(根证书是rootCA.pem)。

实现局域网https域名访问内网服务

双击此证书,在【信任】设置中,SSL和X.509基本策略两项选择【始终信任】。

实现局域网https域名访问内网服务

3. 生成域ssl证书

在这里我生成一个 *.lipten.link 的通配域名证书。

创建一个v3.ext文件,以创建一个X509 v3证书。注意我们指定了subjectAltName选项。

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName=@alt_names

[alt_names]
DNS.1 = *.lipten.link
复制代码

创建证书密钥,

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key
复制代码

这一步填写域名证书密钥需要的信息,会展示在浏览器的域名证书信息,其中最重要的是Common Name的内容,必须是对应需要https访问的域名的。

Country Name (2 letter code) []:CN
State or Province Name (full name) []:Province
Locality Name (eg, city) []:City
Organization Name (eg, company) []:WIZ Technology Co. Ltd.
Organizational Unit Name (eg, section) []:WIZ Technology Co. Ltd.
Common Name (eg, fully qualified host name) []:*.lipten.link
复制代码

证书签名请求通过我们之前创建的根SSL证书颁发,创建出一个 *.lipten.link 的域名证书。输出是一个名为的证书文件server.crt,

$ openssl x509 -req -in server.csr -CA [rootCA.pem路径] -CAkey [rootCA.key路径] -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
复制代码

注意 CA 和 CA Key 根据实际情况填写路径,我的 rootCA 证书根域SSL证书是分开的。

现在可以开始使用这张证书了,我服务器使用的是 nginx,这里贴下部分配置。

server {
    listen 80;
    listen 443 ssl;
    # 以www.lipten.link域名访问
    server_name ~^www\.lipten\.link$;
    
    # 配置ssl域名证书
    ssl_certificate     [ssl证书路径]/server.crt;
    ssl_certificate_key [ssl证书路径]/server.key;
    
    index index.html index.php;
    # 反向代理需要被访问的本地服务
    location / {
      proxy_pass http://localhost:8080;
    }
    ...
}
复制代码

记得重启nginx

$ nginx -s reload
复制代码

最后把本地hosts改一下,www.lipten.link指向本地地址

$ sudo vim /etc/hosts
复制代码

添加以下配置

127.0.0.1   www.lipten.link
复制代码

效果如下:

实现局域网https域名访问内网服务
实现局域网https域名访问内网服务

以上已经实现了https自定义域名访问本地服务,这么做就可以在满足很多需要指定域名访问才能调试的情况了,不用每次都发远程服务器啦。

实现局域网内其他设备可访问。

但这个方案只能在本地调试,有些第三方sdk还需要在手机对应的app里访问才能模拟真正的环境进行sdk的功能调试。

要想让其他设备也能以https域名在本地调试,只能是靠路由器hosts实现了,我们需要一台已经破解ssh的路由器,至于路由器怎么破解ssh就不在这里讲述了。

我手里有一台刷了Padavan固件的路由器,可以直接在web管理界面进行hosts配置:

左边栏选择 内部网络(LAN) -> 选择 DHCP服务器 -> 点击底部的 自定义配置文件 "hosts"

实现局域网https域名访问内网服务

重启路由器,把其他设备接入同一个局域网内,就可以通过https://www.lipten.link访问到内网的本地服务啦。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Parsing Techniques

Parsing Techniques

Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00

This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具