整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

内网使用自签名证书 浏览也可以“安全”

内网使用自签名证书 浏览也可以“安全”


正常情况下,我们浏览器是显示安全小锁的,需要网站具有域名的所有权,并且有权威的CA机构来颁发证书,保证了用户通过https协议访问的安全。显示不安全的情况,大概有以下四种:

1.证书过期

目前各浏览器支持的证书有效期都在1年左右,所以很多网站管理人员经常忽略掉证书的有效期,导致证书过期,不能及时续费,这种情况浏览器就会在用户访问时提示不安全警告。

2.域名不匹配

SSL证书一个最主要的作用就是核验网站身份,所以证书必须与对应的域名绑定,如果访问的域名与证书中设置的域名不一致,浏览器也会发出警告。域名不匹配可能是配置证书时域名设置错误,也有可能因为多个网站使用同一张SSL证书导致。

3.部署了不受信任的证书

很多小公司为了节省成本,会选择通过第三方平台或者自己开发制作自签名SSL证书。这些自签名证书虽然也能使网站实现HTTPS协议,但由于不是由浏览器信任的CA机构签发,会被浏览器判定为不安全证书进行提示。只有是由受信任根证书所签发出来的SSL证书,浏览器才会认为是安全的,所以部署SSL证书一定要选择权威、正规的SSL证书服务商。

4.系统时间错误

系统时间错误时很容易被忽视的一个原因,很多浏览器会根据系统时间而非自然时间来判断网站的证书是否已经过期。所以如果系统时间设置错误,即便证书还没有过期,也会被浏览器误判,导致页面显示错误提示。这种情况也最好解决,只要将系统时间调整为正确时间就可以避免这种问题。

场景

本地测试机器两台:

1.centos7.9.2009

2.win10

需要在测试机器上部署多套环境,例如discuz3.5,wordpress等等网站时,会出现类似不安全的提示:

参考

经过搜索之后发现,大致有三个比较大的部分

1.使用openssl生成自签名

2.对网站进行证书设置

3.客户端电脑进行hosts设置,并安装信任自签名的证书

解决

1.使用openssl生成自签名

查看centos7.9中openssl的默认版本

openssl version
OpenSSL 1.0.2k  

这个版本生成证书时不支持生成 证书主题背景的备用名称。

所以,我们需要先把openssl版本升级到1.1.1以上。

升级openssl

下载:https://www.openssl.org/source/

wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz

解压编译安装

tar -zxvf openssl-1.1.1c.tar.gz 
cd openssl-1.1.1g
sudo ./config --prefix=/usr/local/openssl
sudo make -j 16
sudo make install
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl

sudo vim /etc/ld.so.conf 打开文件,把/usr/local/openssl/lib加的文件最后:


sudo ldconfig -v # 设置生效



检查版本,发现是1.1.1g,完成。

使用以下命令生成证书和私钥(这里我们生成十年的通配符*.pro.com)

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes   -keyout pro.com.key -out pro.com.crt -subj "/CN=*.pro.com"   -addext "subjectAltName=DNS:pro.com,DNS:*.pro.com,IP:192.168.131.4"

2.对网站进行证书设置

3.客户端电脑进行hosts设置,并安装信任自签名的证书

这里的客户端使用的windows10,路径如图所示

如果直接无法修改,可以在桌面复制一份文件,改完之后使用管理员权限覆盖到这里也可以。

导出证书文件

这里我们需要把crt文件导出到windows10机器上的桌面上(其他路径也可以),然后开始导入

选择本地计算机,点击下一步

选择受信任的根证书颁发机构

点击完成,之后就导入成功了。

结果展示

4.大功告成

参考链接:

https://www.coder.work/article/7758786

https://www.cnblogs.com/digdeep/p/13615545.html

https://www.zhihu.com/question/551300750/answer/2681354691


欢迎大家提出不一样的观点,我们一起讨论,

我是辣个男人,一个运维人。

使没有域名只有IP地址,你仍然可以实现HTTPS加密。但是,这通常涉及一些额外的步骤和注意事项,因为大多数证书颁发机构(CA)要求有一个域名来验证证书申请者的身份。不过,有些CA允许你为IP地址获取证书。以下是实现这一目标的步骤和注意事项:

1、确保是公网IP

你必须有一个公网IP地址,SSL证书颁发机构(CA)不会为私有IP地址颁发证书。因为只有公网IP才能被互联网上的客户端直接访问。

2、管理权限

确保您对该IP地址有管理权限,能够进行必要的配置和证书申请操作。因为在申请SSL证书时,你需要证明你对该IP地址拥有管理权限。这通常通过上传特定文件到服务器或者通过其他验证方式完成。

3、选择证书类型

大多数CA不直接为IP地址提供SSL/TLS证书。但是,有些CA(如JoySSL)提供IP地址SSL证书。需要找到支持此服务的CA,你需要申请一种特殊类型的SSL证书——IP地址证书。虽然早期只有企业或组织机构才能申请IP SSL证书,但现在个人用户也可能有条件申请。您可以咨询可信的SSL证书服务商(如JoySSL),了解当前对于IP地址证书的申请政策和流程。

直接咨询获取IP地址证书https://www.joyssl.com/certificate/select/ip_certificate.html?nid=15

4、获取证书

如果你选择从CA获取证书,你需要遵循他们的流程来申请IP地址证书。这通常涉及验证你对IP地址的控制权,以及支付相关费用。

5、安装SSL证书

验证通过后,CA会颁发SSL证书给你,包括证书文件和私钥。将获得的SSL证书安装到你的Web服务器上,并正确配置SSL/TLS设置。在你的Web服务器上安装证书和私钥。这通常涉及到编辑服务器的SSL/TLS配置文件,并指定证书和私钥的路径。配置服务器以监听IP地址上的HTTPS端口(默认为443)。

6、重定向HTTP请求

如果你的服务器同时监听HTTP和HTTPS端口,确保所有HTTP请求都被重定向到HTTPS。这可以通过服务器配置中的重定向规则来实现。

7、测试HTTPS连接

配置完成后,通过“https://[你的IP地址]”访问,确认HTTPS加密是否生效,以及浏览器是否显示安全连接标志。确保没有错误或警告,并且内容正确加载。

8、维护和更新

定期检查证书的有效期,并在需要时续订或更新证书。

监控SSL/TLS协议和加密算法的发展,并根据需要更新服务器配置。

请注意,直接使用公网IP来部署HTTPS的场景相对较少,所以市面上没有相应的免费IP地址证书提供,不过因此也顺带使IP地址证书对加密强度和安全性的提高,付费IP地址证书的安全性和稳定性是免费证书所无法比拟的。

在现代网络应用开发中,IP 归属地查询功能为用户提供了极大的便利。本文将向你展示如何将 APISpace 提供的 IP归属地查询 API 快速集成到你的项目中,并在前端展示查询结果。


前端UI代码

首先,我们需要创建一个用户友好的界面,让用户可以输入 IP 地址并查看查询结果。以下是一个简单的 HTML 页面示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>IP归属地查询</title>
    <style>
        body { font-family: Arial, sans-serif; }
        .container { max-width: 300px; margin: auto; }
        input, button { width: 100%; padding: 10px; margin-bottom: 10px; }
        .result { margin-top: 20px; }
    </style>
</head>
<body>
    <div class="container">
        <h2>IP归属地查询</h2>
        <input type="text" id="ipInput" placeholder="输入IP地址" />
        <button onclick="queryIP()">查询</button>
        <div id="result" class="result"></div>
    </div>

    <script src="script.js"></script> <!-- 引入JavaScript文件 -->
</body>
</html>


接口请求与结果处理代码

接下来,我们将编写 JavaScript 代码来处理 API 请求和结果展示,这里我使用的接口是 APISpace 的 IP归属地查询API。请将以下代码保存为script.js文件,并确保它与HTML文件位于同一目录下。

https://www.apispace.com/eolink/api/ipguishu/introduction?utm_source=tth&utm_content=deep&utm_term=ipguishudi

// script.js
function queryIP() {
    var ip=document.getElementById('ipInput').value;
    if (ip) {
        // 发送API请求
        fetch('https://eolink.o.apispace.com/ipguishu/ip/geo/v1/district', {
            method: 'GET',
            headers: {
                'X-APISpace-Token': '你的API密钥' // 替换为你的API密钥,登录APISpace即可获取
            },
            params: {
                ip: ip
            }
        })
        .then(response=> {
            if (!response.ok) {
                throw new Error('Network response was not ok');
            }
            return response.json();
        })
        .then(data=> {
            if (data.code==="Success") {
                // 显示查询结果
                displayResult(data.data);
            } else {
                // 显示错误信息
                alert('查询失败: ' + data.msg);
            }
        })
        .catch(error=> {
            console.error('There has been a problem with your fetch operation:', error);
            alert('查询失败: ' + error.message);
        });
    } else {
        alert('请输入IP地址!');
    }
}

function displayResult(data) {
    var resultDiv=document.getElementById('result');
    resultDiv.innerHTML=`
        <p>大洲: ${data.continent}</p>
        <p>国家: ${data.country}</p>
        <p>省份: ${data.prov}</p>
        <p>城市: ${data.city}</p>
        <p>区县: ${data.district}</p>
        <p>邮政编码: ${data.zipcode}</p>
        <p>时区: ${data.timezone}</p>
        <p>查询精度: ${data.accuracy}</p>
        <p>所属机构: ${data.owner}</p>
        <p>运营商: ${data.isp}</p>
        <p>采集方式: ${data.source}</p>
        <p>国家编码: ${data.areacode}</p>
        <p>行政编码: ${data.adcode}</p>
        <p>自治域编码: ${data.asnumber}</p>
        <p>维度: ${data.lat}</p>
        <p>经度: ${data.lng}</p>
        <p>定位半径: ${data.radius}</p>
    `;
}

请确保在实际部署时替换'你的API密钥'为你从 APISpace 获取的实际 API 密钥。


测试和部署

在本地环境中打开HTML文件,输入IP地址,点击查询按钮,你将看到查询结果展示在页面上。测试无误后,你可以将这个应用部署到任何静态网页托管服务上,如GitHub Pages。


最后我们还上线了一个的非常好用的插件,简直是工作提效大帮手 —— Buffup.AI。使用 Buffup Chrome 扩展程序,您可以轻松地将 ChatGPT 和其他 AI 功能集成到您的日常任务中-无论是搜索Web、发送电子邮件、增强写作还是翻译文本。感兴趣的同学快去 Chrome 插件商店搜索添加使用起来吧~

https://chromewebstore.google.com/detail/buffup-the-ai-copilot-of/nldfkphmngahpfflbfihipoahbbgbhca?utm_source=tth&utm_content=deep&utm_term=ipguishudi


结语

通过以上步骤,你已经成功地将IP归属地查询API集成到你的项目中,并在前端展示了查询结果。这个简单的集成过程可以帮助你快速地为你的应用添加地理位置功能。记得在实际部署时,将API密钥保密,避免泄露。