我希望有人可以帮助我了解一些 SSL 证书的基础知识,这些基础知识我在从文档、维基百科和互联网上几乎所有其他地方获取时遇到了麻烦。
我正在开发一个与另一个网络上的另一个通信的应用程序。每个应用程序在双向通信中都充当客户端和服务器。他们将通过 HTTPS 使用 REST 服务,每个网络的防火墙都为另一个明确打开。所有 SSL 证书都是自签名的。我的应用程序是用 Java 编写的,但我不确定另一个。
我相信我有两种选择可以使用自签名证书建立 HTTPS 连接:
- 每个应用程序的底层框架(例如 Java)安装另一个的自签名证书,从而导致该框架,而不一定是更广泛的操作系统,信任证书
- 每台服务器都将对方的证书安装为根证书颁发机构,因此信任另一台服务器生成的任何自签名证书。像 Java 这样的框架应该承认这个操作系统级别的根证书颁发机构,但该服务器上的 Web 浏览器可能不会,因为它维护自己的数据库
我正在使用的服务器已经生成了以下文件:server.crt和server.key. 我相信这些是使用生成的openssl genrsa。我知道.crt是公共证书,.key是它的私钥对应物。我的主要问题是
- 是否可以
.crt被其他服务器视为框架级证书或操作系统级根证书颁发机构(即我可以选择如何安装它)?在我的在线研究中,这非常令人困惑,因为许多术语似乎超载。我不知道我是在使用证书颁发机构还是只是在使用普通证书。 - 如果对 1 的回答是否定的,我需要从现有文件生成什么样的文件才能仅安装自签名证书?
非常感谢任何帮助,请假设提供指向 Wikipedia 页面的链接对我没有多大帮助。