openssl验证-CAfile与-CApath:不同的行为?

openssl验证-CAfile与-CApath:不同的行为?,openssl,certificate,verify,Openssl,Certificate,Verify,使用“openssl验证”验证证书链时,我看到两种不同的行为,具体取决于指定了-CAfile还是-CApath。对于-CAfile,文件必须包含链中的所有证书,包括自签名根。使用-CApath,目录只需要包含正在验证的证书的颁发者;根证书不需要存在 使用-CAfile: $ ls -laR .: total 16 drwxr-xr-x. 3 tomiii tomiii 4096 Aug 10 12:27 . drwx------. 62 tomiii tomiii 4096 Aug 10 1

使用“openssl验证”验证证书链时,我看到两种不同的行为,具体取决于指定了-CAfile还是-CApath。对于-CAfile,文件必须包含链中的所有证书,包括自签名根。使用-CApath,目录只需要包含正在验证的证书的颁发者;根证书不需要存在

使用-CAfile:

$ ls -laR
.:
total 16
drwxr-xr-x.  3 tomiii tomiii 4096 Aug 10 12:27 . 
drwx------. 62 tomiii tomiii 4096 Aug 10 11:23 ..
drwxr-xr-x.  2 tomiii tomiii 4096 Aug 10 12:27 trusted
-rw-r--r--.  1 tomiii tomiii 1753 Aug 10 12:27 untrusted.pem

./trusted:
total 16
drwxr-xr-x. 2 tomiii tomiii 4096 Aug 10 12:27 . 
drwxr-xr-x. 3 tomiii tomiii 4096 Aug 10 12:27 ..
lrwxrwxrwx. 1 tomiii tomiii   16 Aug 10 12:27 05751b17.0 -> intermediate.pem
lrwxrwxrwx. 1 tomiii tomiii    8 Aug 10 12:27 b204d74a.0 -> root.pem
-rw-r--r--. 1 tomiii tomiii 1915 Aug 10 12:26 intermediate.pem
-rw-r--r--. 1 tomiii tomiii 1732 Aug 10 12:26 root.pem
$ openssl verify -CAfile trusted/intermediate.pem untrusted.pem
untrusted.pem: C = US, O = Symantec Corporation, OU = Symantec Trust Network, CN = Symantec Class 3 SHA256 Code Signing CA
error 2 at 1 depth lookup:unable to get issuer certificate
$ openssl verify -CAfile <(cat trusted/*) untrusted.pem
untrusted.pem: OK

我在OpenSSL文档中找不到任何东西可以解释为什么-CApath本身信任中间证书,而-CAfile具有相同的信任,并且需要根证书来验证链。为什么会有差异?

如果您给出
验证
-CAfile-CApath
中的一个,但不验证另一个(并且不指定仅1.1.0+上的
-no-
版本),那么它将对另一个使用默认值。检查您的系统/环境的默认值(在默认的OPENSSLDIR
openssl版本-d
中,除非设置了envvars
SSL\u CERT{FILE,DIR}
),我打赌您会发现默认文件有根,但默认路径=DIR没有。(在最新版本中,
s_client
等也是如此,但在RedHat以外的旧版本中,有一个错误没有正确使用默认值。)PS:特别是因为赛门铁克最近被CABF隐喻性地“定罪”,不得不卖给Digicert,以避免被判“苦役”。尽管CABF对代码签名没有“管辖权”。
$ rm trusted/b204d74a.0 trusted/root.pem 
$ ls -laR
.:
total 16
drwxr-xr-x.  3 tomiii tomiii 4096 Aug 10 12:27 . 
drwx------. 62 tomiii tomiii 4096 Aug 10 11:23 ..
drwxr-xr-x.  2 tomiii tomiii 4096 Aug 10 12:29 trusted
-rw-r--r--.  1 tomiii tomiii 1753 Aug 10 12:27 untrusted.pem

./trusted:
total 12
drwxr-xr-x. 2 tomiii tomiii 4096 Aug 10 12:29 . 
drwxr-xr-x. 3 tomiii tomiii 4096 Aug 10 12:27 ..
lrwxrwxrwx. 1 tomiii tomiii   16 Aug 10 12:27 05751b17.0 -> intermediate.pem
-rw-r--r--. 1 tomiii tomiii 1915 Aug 10 12:26 intermediate.pem
$ openssl verify -CApath trusted untrusted.pem 
untrusted.pem: OK