解决钉钉服务器出口IP不确定问题:自签名根证书+hosts文件+nginx反向代理

解决钉钉服务器出口IP不确定问题:自签名根证书+hosts文件+nginx反向代理,第1张

企业内部应用一般部署在内网,没有固定的公网IP,这样在访问钉钉的API时就会被拦截下来。钉钉的服务器出口IP只支持一个统配符,出现不匹配的情况就会被拦截。

当然存在多种解决方案,各有差别,但是本质都需要一个公网服务器,公网搭设一个代理服务:

这里我介绍一种用反向代理的方法解决没有固定IP的方案。内网的windows服务器只需要一个根证书、改Hosts文件即可。

本地hosts文件强制解析到自有服务器上,中间的证书是自签名认证的,服务器获取到请求后转发给真正的钉钉服务器,这样出口IP就确定了下来,能过验证。注意根证书的私钥不要泄露了,否则带来中间人攻击的风险。

自签名的SSL证书制作极其简单,几句openssl命令即可生成一个密钥和证书。但是:

自签名证书在网络上是不可信的,但如果只是自己家里、局域网内测试,是没有问题的。因为现在很多应用全都强制要求是https,所以自己电脑、家里服务器也都必须装配ssl证书。不愿意花钱买第三方证书,就自己本机制作一个自签名证书,也是可以的。

参考:如何在Linux中创建SSL证书签名请求(CSR)

参考:创建并部署自签名的 SSL 证书到 Nginx

制作前须知:

在本机创建一个自签名(自己给自己签名)的SSL证书,都是用 openssl 命令。一般Mac/Ubuntu等都是默认装配的,安装的话也是类似 sudo apt-get install openssl ,很简单。

生成证书分为这四步:

生成证书:

此时 ~/.ssl/ 文件夹下只剩下两个文件,即私钥-公钥(证书)对:

然后就可以将两个文件应用到HTTPS网络连接了。

CSR请求文件的互动过程太慢,每次手输比较麻烦,一般会用 *.cnf 配置文件来自动完成所需要输入的个人信息等内容。

比如可以建立一个 ~/.ssl/CSR-Config.cnf ,内容格式如下:

生成CSR请求文件时候,就可以用 -config 参数引用这个配置文件而不用进入交互环节了,命令如下:

另外,由于上面是指定的域名为 www.dev.lan ,随便写的。为了让本地能正常访问局域网内的服务器,需要在本地的 /etc/hosts 中将 www.dev.lan 指定为一个ip地址,如 192.168.1.101

无论如何,自签名证书都是不会被自动信任的。

所以服务器的证书,必须在每台客户端设备上手动导入或信任才行。

Chrome信任自签名证书:

打开: chrome://flags/#allow-insecure-localhost ,然后enable本地不安全证书。

Mac本机信任自签名证书:

从Chrome的红色警告图标上,直接拖拽到桌面,就把证书保存到桌面了。

然后双击,启动证书管理器,打开证书,点击上面有一个 Trust ,选择 Always trust 即可。

iOS信任自签名证书:

在Safari的地址栏,点击

因为自签名证书无论如何都不被信任,很麻烦。所以干脆用免费申请到的公网证书来局域网用,然后就能被Chrome完全认可。

方法就是,把第三方证书配置到nginx等服务器上。然后修改本地的 /etc/hosts 文件,将局域网内的ip映射为第三方证书所对应的网站,如 192.168.1.101 music.spotify.com 。这样的话,就完全没有报警提示了。

但是,也需要每台客户端都修改hosts才行。(iOS不能改)

所有客户端都改还是比较麻烦的,如果可以配置路由器的话,直接修改路由器的hosts,或者路由器上的转发,就能达到所有局域网内客户端都能访问了。

但是缺点是,局域网上配置的映射后,就不能访问那个真实网址 music.spotify.com 听歌了。

An SSH key allows you to establish a secure connection between your computer and GitLab. Before generating an SSH key in your shell, check if your system already has one by running the following command:

To generate a new SSH key, use the following command:

This command will prompt you for a location and filename to store the key pair and for a password. When prompted for the location and filename, just press enter to use the default. If you use a different name, the key will not be used automatically.

Use the command below to show your public key:

Copy-paste the key to the 'My SSH Keys' section under the 'SSH' tab in your user profile. Please copy the complete key starting with ssh-rsa and ending with your username and host.

To copy your public key to the clipboard, use the code below. Depending on your OS you'll need to use a different command:

1、打开命令终端,输入下面的命令,进入hosts文件:

2、查看host

查看本地ssh 的方法

终端输入:

就能看到你的私人秘钥了

参考文章 https://confluence.atlassian.com/bamkb/ssl-certificate-subject-305037865.html


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/249529.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存