自签名证书抛出“RSA_padding_check_PKCS1_type_1:无效填充”错误

自签名证书抛出“RSA_padding_check_PKCS1_type_1:无效填充”错误

我的域名使用如下创建的自签名证书:

$ ISSUER="/C=EN/L=City/O=ORG"
$ SUBJECT="/C=EN/L=City/O=ORG/CN=myserver.com"
$ SAN="DNS:myserver.com"
$ openssl req -new -newkey rsa:4096 -keyout issuer.key -x509 -out issuer.crt  -days 3650 -nodes -subj "$ISSUER"
$ openssl req -new -out subject.csr -newkey rsa:4096 -keyout subject.key -days 3650 -nodes -subj "$SUBJECT"
$ echo "subjectAltName=$SAN" > subject.ext
$ openssl x509 -in subject.csr -req -out subject.crt -extfile subject.ext -CA issuer.crt -CAkey issuer.key -CAcreateserial -days 3650
$ cp issuer.crt myserver.crt
$ cp subject.key myserver.key
$ cat subject.crt issuer.crt > certbundle.pem

我的 nginx 网络服务器 ssl 配置:

        ssl on;
        ssl_certificate /keys/certbundle.pem;   
        ssl_certificate_key /keys/myserver.key;

如果我将证书 myserver.crt 添加到/etc/ssl/certs/我的客户端机器上,openssl rehash在其上运行,然后尝试通过 curl 从我的域下载某些内容,curl --capath /etc/ssl/certs/ https://myserver.com/file.txt我会得到

curl: (35) error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding

为什么会抛出此错误?生成密钥和证书时我做错了什么?

编辑:

运行curl --cacert certs/domain.crt https://my.server.com/file.txt --output file.txt正常。文件已下载。当我openssl rehash在文件夹上运行然后使用curl --capath folder/相同的 rsa 填充时,错误再次出现

答案1

我尝试通过自创 CA 颁发 SSL 证书,以将其用于本地主机上的 Web 开发,但遇到了同样的错误。我尝试多次创建有效的 SSL 证书,但总是出现此错误,并且我在操作系统的信任源(在 manjaro 上)error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding中注册了多个具有相同 CN 的证书颁发机构:/etc/ca-certificates/trust-source

me@host /e/c/trust-source> ls -al
total 116
drwxr-xr-x 4 root root 4096 Sep 26 02:47 ./
drwxr-xr-x 4 root root 4096 May  8  2019 ../
drwxr-xr-x 2 root root 4096 Sep 25 09:46 anchors/
drwxr-xr-x 2 root root 4096 Nov 10  2018 blocklist/
-r--r--r-- 1 root root 2685 Sep 25 10:02 test.com.1.p11-kit
-r--r--r-- 1 root root 2564 Sep 25 10:50 test.com.10.p11-kit
-r--r--r-- 1 root root 2560 Sep 25 10:54 test.com.11.p11-kit
-r--r--r-- 1 root root 2564 Sep 25 11:05 test.com.12.p11-kit
-r--r--r-- 1 root root 2692 Sep 25 11:08 test.com.13.p11-kit
-r--r--r-- 1 root root 2692 Sep 25 11:09 test.com.14.p11-kit
-r--r--r-- 1 root root 2678 Sep 25 11:09 test.com.15.p11-kit
-r--r--r-- 1 root root 2692 Sep 25 11:16 test.com.16.p11-kit
-r--r--r-- 1 root root 2698 Sep 25 11:16 test.com.17.p11-kit
-r--r--r-- 1 root root 2696 Sep 25 12:06 test.com.18.p11-kit
-r--r--r-- 1 root root 2700 Sep 26 01:06 test.com.19.p11-kit
-r--r--r-- 1 root root 2686 Sep 25 10:11 test.com.2.p11-kit
-r--r--r-- 1 root root 2687 Sep 26 02:34 test.com.20.p11-kit
-r--r--r-- 1 root root 2697 Sep 26 01:24 test.com.21.p11-kit
-r--r--r-- 1 root root 2698 Sep 25 10:25 test.com.3.p11-kit
-r--r--r-- 1 root root 2567 Sep 25 10:31 test.com.4.p11-kit
-r--r--r-- 1 root root 2574 Sep 25 10:31 test.com.5.p11-kit
-r--r--r-- 1 root root 2560 Sep 25 10:32 test.com.6.p11-kit
-r--r--r-- 1 root root 2580 Sep 25 10:33 test.com.7.p11-kit
-r--r--r-- 1 root root 2560 Sep 25 10:33 test.com.8.p11-kit
-r--r--r-- 1 root root 2560 Sep 25 10:42 test.com.9.p11-kit
-r--r--r-- 1 root root 2685 Sep 26 02:47 test.com.p11-kit

我如何解决问题:我删除了所有这些“重复项”,然后update-ca-trust重新生成系统信任的 CA 列表。然后导入我自己创建的 CA 一次,针对它生成 SSL 证书,并在我的 Web 服务器中使用 crt 和密钥 - 最后error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding在 CURL 进入时没有出现问题!

相关内容