Я пытаюсь протестировать скрипт локально, который включает в себя загрузку файла с помощью программы на Java на сервер FileZilla FTPES.

На самом деле, на сервере FZ есть настоящий сертификат, и шаг загрузки (протестированный в одиночку), кажется, работает нормально.

Я установил FileZilla Server на своем компьютере разработчика (поэтому он будет тестировать загрузку с локального на локальный). Конечно, у меня нет настоящего сертификата, поэтому я использовал кнопку «Создать новый сертификат ...» в FZ. Он отлично работает с интерактивной программой FTPES (пока я одобряю неизвестный сертификат), но из моей программы на Java он выдает javax.net.ssl.SSLHandshakeException ("невозможно найти действительный путь сертификации к запрошенной цели").

Итак, как мне сказать Java, что этот сертификат в порядке со мной?

(Я знаю, что есть способ изменить программу Java, чтобы она принимала любой сертификат, но я не хочу идти по этому пути. Я хочу проверить это так же, как это будет происходить в производстве, и я не хочу игнорировать неизвестные сертификаты в производстве.)

Я обнаружил, что в Java есть программа под названием "keytool", которая, похоже, предназначена для управления подобными вещами, но жалуется, что файл сертификата, сгенерированный FZ, не является файлом «x.509». Публикация со стороны FZ гласила, что это "кодировка PEM". У меня есть "openssl" здесь, который выглядит так, как будто он идеально подходит для преобразования между форматами сертификатов, но я думаю, что мое понимание форматов сертификатов неверно, потому что я не вижу ничего очевидного.

Мои знания о сертификатах безопасности немного шатки, поэтому, если мой заголовок ошибочно, пожалуйста, помогите исправить это. :-)

1 ответ1

2

PEM - это просто механизм кодирования двоичных данных в представлении base64. Большинство сертификатов x.509 имеют кодировку PEM; они выглядят примерно так:

-----BEGIN CERTIFICATE-----
MIICbDCCAdWgAwIBAgIJALeUXoWyGYBYMA0GCSqGSIb3DQEBBQUAMCoxGzAZBgNV
BAMMEmh4NTA5IFRlc3QgUm9vdCBDQTELMAkGA1UEBhMCU0UwHhcNMDcxMTE1MDY1
ODU2WhcNMTcxMTEyMDY1ODU2WjAqMRswGQYDVQQDDBJoeDUwOSBUZXN0IFJvb3Qg
Q0ExCzAJBgNVBAYTAlNFMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHcvJb
yJXPhM9HHq1hU6d2Cu1fW9o1CvObirn1SNZg+pTnQgO9Lv4VjQQfltNK0aovyLJa
UdbAbsRCfH+79YY2tU76x8aXpUri0DfUv5PGscIZzW7WULaaXxBgHo1owzmhc1Qj
F9JDEurJXGFEZaDsPcEwY40RjrKDL8SXzEoEwwIDAQABo4GZMIGWMB0GA1UdDgQW
BBSM5w21xd5phXUsCKHeUxUwnKHoADBaBgNVHSMEUzBRgBSM5w21xd5phXUsCKHe
UxUwnKHoAKEupCwwKjEbMBkGA1UEAwwSaHg1MDkgVGVzdCBSb290IENBMQswCQYD
VQQGEwJTRYIJALeUXoWyGYBYMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgHmMA0G
CSqGSIb3DQEBBQUAA4GBAIBa6mq1aytlbhixD6q4PROg7P1OGX6nr5CkC96CC+Xp
5UTLZEVIddkrBswNAAS0p5eEorO8xD9eT5ztZ0oYITymsO1sEIfDLks+LhdBoyF7
TX24INRwjlqsC8UlbRFoClxIMNhrMwcC3oZ4oLddV2OmA0IOG6yHXvEOQq0sTotr
-----END CERTIFICATE-----

Вы можете проверить такой сертификат, используя openssl, например:

$ openssl x509 -in filename -noout -text

Для вышеуказанного сертификата это печатает:

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number:
        b7:94:5e:85:b2:19:80:58
    Signature Algorithm: sha1WithRSAEncryption
    Issuer: CN=hx509 Test Root CA, C=SE
    Validity
        Not Before: Nov 15 06:58:56 2007 GMT
        Not After : Nov 12 06:58:56 2017 GMT
    Subject: CN=hx509 Test Root CA, C=SE
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
        RSA Public Key: (1024 bit)
            Modulus (1024 bit):
                00:c7:72:f2:5b:c8:95:cf:84:cf:47:1e:ad:61:53:
                a7:76:0a:ed:5f:5b:da:35:0a:f3:9b:8a:b9:f5:48:
                d6:60:fa:94:e7:42:03:bd:2e:fe:15:8d:04:1f:96:
                d3:4a:d1:aa:2f:c8:b2:5a:51:d6:c0:6e:c4:42:7c:
                7f:bb:f5:86:36:b5:4e:fa:c7:c6:97:a5:4a:e2:d0:
                37:d4:bf:93:c6:b1:c2:19:cd:6e:d6:50:b6:9a:5f:
                10:60:1e:8d:68:c3:39:a1:73:54:23:17:d2:43:12:
                ea:c9:5c:61:44:65:a0:ec:3d:c1:30:63:8d:11:8e:
                b2:83:2f:c4:97:cc:4a:04:c3
            Exponent: 65537 (0x10001)

... и куча других вещей. Таким образом, вы можете (а) проверить, что ваш файл содержит сертификат, и (б) просмотреть сведения о сертификате.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .