我正在尝试创建一个根证书、一个用于签名的中间证书以及一个用于 Google App Engine 流量的最终证书。我可以很好地创建一个根:
openssl genrsa -aes256 -out root.key 8192
openssl req -x509 -new -nodes -key root.key -days 7300 -out root.crt
然后我去创建一个中间证书,该证书将负责生成可用的密钥。
openssl genrsa -aes256 -out inter.key 4096
openssl req -new -key inter.key -out inter.csr
openssl x509 -req -in inter.csr -CA root.crt -CAkey root.key -CAcreateserial -out inter.crt
最后,我创建了用于该站点的密钥对。
openssl genrsa -out inter.key 2048
openssl req -new -key site.key -out site.csr
openssl x509 -req -in site.csr -CA inter.crt -CAkey inter.key -CAcreateserial -out site.crt
然后我在我的计算机上安装了 root.crt(在本例中为 Google Chrome)。但是,它不接受最终证书为可信。但是,如果我跳过中间证书并仅使用根证书签署站点证书,它就会完全按照它应该的方式工作。我错过了什么吗?我觉得这应该可行,考虑到我基本上只是在创建一个返回根的证书链,对吧?还是我对这一切应该如何运作有根本的误解?
编辑:我发现这基本上正是我想要做的。那么我的方法是怎么回事?我可能遗漏了一些微妙的东西。