Sgadmin fails with "File does not contain valid private key"



I’m setting up my ELK stack with searchguard plugin. I have generated my keys using following command

keytool -genkeypair -keyalg RSA -keystore elk_keystore.p12 -storetype PKCS12 -storepass -sigalg SHA256withRSA -keysize 4096 -alias elkserver -keypass -validity 1825 -dname “O=<org_name>, L=, ST=, C=<country_code>, CN=<my_cn_name>”

I was able to start elasticsearch with the above keys and certificates, however when I’m trying to run the sgadmin command using the above keys, I’m getting following error.
java.lang.IllegalStateException: failed to load plugin class [com.floragunn.searchguard.SearchGuardPlugin]

Caused by: ElasticsearchSecurityException[Error while initializing transport SSL layer from PEM: java.lang.IllegalArgumentException: File does not contain valid private key: …

Please see below my elasticsearch.yml

searchguard.ssl.transport.pemcert_filepath: elasticserver.cer
searchguard.ssl.transport.pemkey_filepath: elasticserver.key
searchguard.ssl.transport.pemtrustedcas_filepath: intermediate-root-integrated.cer
searchguard.ssl.transport.enforce_hostname_verification: true
searchguard.ssl.http.enabled: true

searchguard.ssl.http.pemcert_filepath: elasticserver.cer
searchguard.ssl.http.pemkey_filepath: elasticserver.key
searchguard.ssl.http.pemtrustedcas_filepath: intermediate-root-integrated.cer
searchguard.allow_unsafe_democertificates: true
searchguard.allow_default_init_sgindex: true
  - 'CN=$$my_cn$$, O=$$my_org$$, C=$$country_code$$, L=$$country$$, ST=$$country$$'
  - 'CN=$$my_cn$$, O=$$my_org$$, C=$$country_code$$, L=$$country$$, ST=$$country$$'

searchguard.audit.type: internal_elasticsearch
searchguard.enable_snapshot_restore_privilege: true
searchguard.check_snapshot_restore_write_privileges: true
searchguard.restapi.roles_enabled: ["sg_all_access"]
cluster.routing.allocation.disk.threshold_enabled: false
discovery.zen.minimum_master_nodes: 1
node.max_local_storage_nodes: 3 false

I have used same certificates as both admin and node certificates. This is the sgadmin command I have used,

./ -h -p 9300 -cn elasticsearch -cd …/sgconfig/ -nhnv -cacert <path_to_intermediate-root-integrated.cer> -cert <path_to_elasticserver.cer> -key <path_to_elasticserver.key> -keypass

Kindly help to find out what is the problem here.

Thanks in advance.

assigned cstaley #2

Is your elasticserver.key file encrypted (with a password)?


Yes it’s. I have provided the password to sgadmin with keypass parameter