ошибка чтения файла ключа или сертификата X.509

Я устанавливаю сервер hawkBit и swupdate с включенным SSL / TLS (HTTPS). Шаги следующие:

1 / Создать ключ

      # Generate self signed root CA cert: ca.crt and ca.key
openssl req -nodes -x509 -newkey rsa:2048 -keyout ca.key -out ca.crt -days 3650
# Input the info with CN is <domain>

# Generate server cert to be signed: server.csr and server.key
openssl req -nodes -newkey rsa:2048 -keyout server.key -days 1095 -out server.csr
# Input the info with CN is <domain>

# Sign the server csr: server.crt
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 1095 -out server.crt

# Create pkcs12: server.p12
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt
# Enter Export Password:
# Verifying - Enter Export Password:

# import pkcs#12 to Java key store
keytool -importkeystore -srckeystore server.p12 -srcstoretype pkcs12 \
        -destkeystore server.jks -deststoretype pkcs12 \
        -alias 1 -deststorepass <pass> -srcstorepass <pass>

2 / Конфиг hawkBit

      hawkbit.artifact.url.protocols.download-http.protocol=https
hawkbit.artifact.url.protocols.download-http.port=<port>
security.require-ssl=true
server.use-forward-headers=true 

server.ssl.key-store=/home/huong/software-update-server/hawkbit/hawkbit-runtime/hawkbit-update-server/jks/self_signed.p12
server.ssl.key-store-password=<pass>
server.ssl.key-password=<pass>
server.ssl.enabled=true
server.ssl.protocol=TLS
server.ssl.enabled-protocols=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3

В настоящее время я могу получить доступ к hawkBit с помощью https в браузере.

3 / Конфиг swupdate

  • Включить: CONFIG_CURL_SSL, CONFIG_DOWNLOAD_SSL, CONFIG_CHANNEL_CURL_SSL и CONFIG_SURICATTA_SSL
  • Команда Run: swupdate -v -k /etc/public.pem -f /suricatta.cfg -u ""
  • suricatta.cfg с разделом suricatta:
      suricatta :
{
    tenant      = "DEFAULT";
    id          = "dev01";
    confirm     = 0;
    url         = "https://<domain>:<port>";
    polldelay   = 20;
    nocheckcert = false;
    retry       = 4;
    retrywait   = 200;
    loglevel    = 10;
    userid      = 1000;
    groupid     = 1000;
    cafile      = "/ca.crt";
    sslkey      = "/server.key";
    sslcert     = "/server.crt";
    gatewaytoken    = "<getway_token>";
    /*
    targettoken     = "3bc13b476cb3962a0c63a5c92beacfh7";
    */
};

Журнал показывает ошибку:

      [DEBUG] : SWUPDATE running :  [channel_get] : Trying to GET https://<domain>:<port>/DEFAULT/controller/v1/dev01
*   Trying <ip_addr>...
* TCP_NODELAY set
* Connected to <domain> (<ip_addr>) port <port> (#0)
* found 1 certificates in /ca.crt
* ALPN, offering http/1.1
* error reading X.509 key or certificate file
* Closing connection 0
[ERROR] : SWUPDATE failed [0] ERROR corelib/channel_curl.c : channel_get : 1091 : Channel get operation failed (35): 'SSL connect error'

При запуске swupdate командой: swupdate -v -k /etc/public.pem --ca-path="/chain.pem" -u '-t DEFAULT -u https://<domain>:<port> -i dev01 -g <getway_token>', с chain.pem - публичный ключ сервера (архив openssl rsa -in server.key -pubout -out chain.pem), или chain.pem - это открытый ключ ca или цепочка открытого ключа ca и сервера, журнал показывает ошибку:

      [DEBUG] : SWUPDATE running :  [channel_get] : Trying to GET https://<domain>:<port>/DEFAULT/controller/v1/dev01
*   Trying <ip_addr>...
* TCP_NODELAY set
* Connected to <domain> (<ip_addr>) port <port> (#1)
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification failed. CAfile: none CRLfile: none
* Closing connection 1
[ERROR] : SWUPDATE failed [0] ERROR corelib/channel_curl.c : channel_get : 1091 : Channel get operation failed (60): 'SSL peer certificate or SSH remote key was not OK'

Пожалуйста, не говорите мне использовать server.crt, server.p12 или ca.crt, потому что он показывает ошибку:

      [ERROR] : SWUPDATE failed [0] ERROR corelib/swupdate_rsa_verify.c : load_pubkey : 52 : unable to load key filename /chain.pem
[ERROR] : SWUPDATE failed [0] ERROR corelib/verify_signature.c : swupdate_dgst_init : 135 : Error loading pub key from /chain.pem

и я думаю, что PEM_read_bio_PUBKEY не может получить открытый ключ из сертификата.

В журнале hawkBit я не нашел странного журнала.

Пожалуйста, посоветуйте мне настроить swupdate для работы с hawkBit с включенным SSL / TLS.

  • Какой сертификат / ключ мне нужно использовать на стороне swupdate?
  • Должен ли я использовать файл конфигурации вместо --ca-path аргумент?

Заранее спасибо!

0 ответов

Другие вопросы по тегам