我的域名使用如下创建的自签名证书:
$ 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 进入时没有出现问题!