telegram getwebhookinfo 返回 "SSL error {SSL routines:tls_process_server_certificate:certificate verify failed}"

11 浏览
0 Comments

telegram getwebhookinfo 返回 "SSL error {SSL routines:tls_process_server_certificate:certificate verify failed}"

我正在为一个嵌入式Linux设备添加HTTPS支持。我尝试使用以下步骤生成自签名证书:\n

openssl req -new > cert.csr
openssl rsa -in privkey.pem -out key.pem
openssl x509 -in cert.csr -out cert.pem -req -signkey key.pem -days 1001
cat key.pem>>cert.pem

\n这个方法是有效的,但是我在使用Google Chrome时遇到了一些错误:\n

\n这可能不是您要访问的网站!
\n 该网站的安全证书不受信任!\n

\n我是否漏掉了什么?这是构建自签名证书的正确方法吗?

0
0 Comments

telegram的getwebhookinfo返回"SSL error {SSL routines:tls_process_server_certificate:certificate verify failed}"的问题,是因为浏览器使用预定义的信任锚点列表来验证服务器证书,而自签名证书不会链接到受信任的锚点。解决这个问题的最佳方法是创建自己的证书颁发机构(CA),然后使用该机构签署服务器的证书,并将CA证书安装在客户端上。

创建自己的证书颁发机构的步骤如下:

1. 创建一个自签名证书,将"CA: true"和适当的密钥用法设置为true。

2. 使用该CA密钥对服务器的证书签名。

3. 在服务器上安装服务器证书。

4. 在客户端上安装CA证书。

以下是创建自签名证书的示例命令:

openssl req -config example-com.conf -new -x509 -sha256 -newkey rsa:2048 -nodes \
    -keyout example-com.key.pem -days 365 -out example-com.cert.pem

其中,example-com.conf是一个配置文件,用于指定证书的详细信息,包括DNS名称等。在配置文件中,通过"subjectAltName = _names"将DNS名称放置在主题备用名称(SAN)中。

然后,将CA证书导入浏览器使用的信任存储库中,以便浏览器可以验证服务器证书。

通过以上步骤创建的自签名证书将具有较高的成功验证率,并且不会出现浏览器的安全警告。

请注意,自签名证书在一些浏览器中可能无法导入,如Android的默认浏览器。在这种情况下,只能使用受信任的第三方机构颁发的证书。

以上就是解决telegram getwebhookinfo返回SSL错误的原因和解决方法。通过建立自己的证书颁发机构并签署服务器证书,可以解决浏览器对自签名证书的验证问题。

0
0 Comments

近期在使用Telegram的getWebhookInfo方法时,返回了一个SSL错误:"SSL error {SSL routines:tls_process_server_certificate:certificate verify failed}"。根据提供的内容,我们可以确定这个问题的产生原因是证书验证失败。为了解决这个问题,我们可以按照以下方法进行操作:

1. 在2023年以及OpenSSL版本大于等于1.1.1的情况下,我们可以使用以下命令创建一个包含Subject Alternate Name (SAN)的证书:

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

如果你更喜欢ECC而不是RSA,你可以指定不同的加密参数:

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -days 3650 \

-nodes -keyout example.com.key -out example.com.crt -subj "/CN=example.com" \

-addext "subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1"

2. 在旧系统中,OpenSSL版本小于等于1.1.0(例如Debian ≤ 9或CentOS ≤ 7)时,需要使用以下命令:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \
  -nodes -keyout example.com.key -out example.com.crt -extensions san -config \
  <(echo "[req]"; 
    echo distinguished_name=req; 
    echo "[san]"; 
    echo subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1
    ) \
  -subj "/CN=example.com"

以上每个命令都会生成一个证书,该证书:

- 对于域名example.com有效(SAN);

- 对于通配符域名*.example.com有效(SAN);

- 对于IP地址10.0.0.1有效(SAN);

- 相对较强(截至2023年);

- 有效期为3650天(约10年)。

生成的文件包括:

- 私钥:example.com.key

- 证书:example.com.crt

这些命令都可以在命令行中提供所有所需信息,无需交互式输入或配置文件。

需要注意的是:

1. 证书是自签名的,需要用户手动接受,因此建议使用较长的过期时间和较强的加密算法。

2. 如果不使用-nodes参数,则生成的私钥将被加密,并需要在每次重启时手动输入密码,所以推荐保留-nodes参数。

3. 可以参考提供的链接了解更多关于OpenSSL的信息。

另外,还需要注意,如果在Windows的mingw64中使用第二种命令时遇到了问题,可以尝试在普通的cmd.exe中运行该命令。对于使用git bash的Windows用户,可以在/CN=localhost前添加一个额外的斜杠//CN=localhost来避免参数扩展错误的问题。

最后,需要注意的是,以上方法在2020年8月31日测试有效。关于为什么证书的创建和验证会不断发展,我们可以参考提供的链接来了解更多信息。

0
0 Comments

问题出现的原因是SSL证书验证失败,解决方法是生成一个自签名的SSL证书。

生成自签名SSL证书的步骤如下:

1. 打开终端并执行以下命令:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365

这将生成一个有效期为365天的RSA 4096位的私钥和自签名的证书。你可以根据需要更改有效期的天数。

2. 如果你不想使用密码保护私钥,可以添加`-nodes`参数,如下所示:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes

这将生成一个不需要密码的私钥。

3. 如果你想自定义证书的信息,可以使用`-subj`参数,如下所示:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=CommonNameOrHostname"

将`XX`替换为你的国家代码,将`StateName`替换为你的州名,将`CityName`替换为你的城市名,将`CompanyName`替换为你的公司名,将`CompanySectionName`替换为你的公司部门名,将`CommonNameOrHostname`替换为你的通用名称或主机名。

4. 如果你想为多个不同IP地址的网站使用相同的证书,可以将生成的`key.pem`和`cert.pem`文件复制到相应的网站目录中。

请注意,自签名证书在没有导入到浏览器之前不会被任何第三方验证。如果需要更高的安全性,建议使用由证书颁发机构(CA)签名的证书。

以上就是解决"telegram getwebhookinfo返回\"SSL error {SSL routines:tls_process_server_certificate:certificate verify failed}\""问题的方法。通过生成自签名的SSL证书,可以解决证书验证失败的问题。

0