Ответ
Нет, содержимое SSL/TLS сертификата (X.509) не шифруется. Сертификат является открытым документом и содержит информацию, предназначенную для всеобщего ознакомления.
Что делает сертификат доверенным? Он цифрово подписывается Удостоверяющим Центром (Certificate Authority, CA) с использованием его приватного ключа. Подпись удостоверяет подлинность данных в сертификате.
Структура сертификата включает:
- Открытый ключ владельца сертификата.
- Метаданные: Идентификатор субъекта (домен, организация), издатель (CA), срок действия, алгоритм подписи.
- Цифровая подпись CA, вычисленная от хэша всех вышеперечисленных полей.
Пример проверки сертификата в Java:
// Чтение сертификата из файла
CertificateFactory cf = CertificateFactory.getInstance("X.509");
FileInputStream fis = new FileInputStream("server.crt");
X509Certificate certificate = (X509Certificate) cf.generateCertificate(fis);
// Проверка данных (открытая информация)
System.out.println("Subject: " + certificate.getSubjectX500Principal());
System.out.println("Issuer: " + certificate.getIssuerX500Principal());
System.out.println("Public Key Algorithm: " + certificate.getPublicKey().getAlgorithm());
// Верификация подписи CA (использует открытый ключ CA)
certificate.verify(caPublicKey); // Бросает исключение, если подпись неверна
Где происходит шифрование? Шифрование применяется на уровне TLS-сессии для защиты передаваемых данных, но сам сертификат передаётся по сети в открытом виде в процессе handshake.