Skip to content

[pulsar-broker] Fix TLS : loading PKCS8Key key file for replication in pulsar-broker#3483

Merged
merlimat merged 1 commit intoapache:masterfrom
rdhabalia:admin_tls
Feb 4, 2019
Merged

[pulsar-broker] Fix TLS : loading PKCS8Key key file for replication in pulsar-broker#3483
merlimat merged 1 commit intoapache:masterfrom
rdhabalia:admin_tls

Conversation

@rdhabalia
Copy link
Copy Markdown
Contributor

Motivation

Pulsar-client throws below exception while loading PKCS8Key key file while connecting over TLS.

19:15:52.517 [pulsar-io-21-3] WARN  org.apache.pulsar.client.impl.HttpClient - [admin/persistent/pulsar-java-systest/global/tls/topic1/partitions] Failed to get authentication data for lookup: java.security.KeyManagementException: Private key loading error
org.apache.pulsar.client.api.PulsarClientException: java.security.KeyManagementException: Private key loading error
        at org.apache.pulsar.client.impl.auth.AuthenticationTls.getAuthData(AuthenticationTls.java:59) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.HttpClient.get(HttpClient.java:136) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.HttpLookupService.getPartitionedTopicMetadata(HttpLookupService.java:103) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.PulsarClientImpl.getPartitionedTopicMetadata(PulsarClientImpl.java:801) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.PulsarClientImpl.createProducerAsync(PulsarClientImpl.java:296) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.PulsarClientImpl.createProducerAsync(PulsarClientImpl.java:285) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.ProducerBuilderImpl.createAsync(ProducerBuilderImpl.java:106) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.broker.service.AbstractReplicator.startProducer(AbstractReplicator.java:129) ~[pulsar-broker-2.2.5-x.jar:2.2.5-x]
        at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38) [netty-common-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:125) [netty-common-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-common-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [netty-common-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:309) [pulsar-functions-metrics-2.2.5-x.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886) [netty-common-4.1.22.Final.jar:4.1.22.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.22.Final.jar:4.1.22.Final]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: java.security.KeyManagementException: Private key loading error
        at org.apache.pulsar.common.util.SecurityUtility.loadPrivateKeyFromPemFile(SecurityUtility.java:204) ~[pulsar-common-2.2.5-x.jar:2.2.5-x]
        at org.apache.pulsar.client.impl.auth.AuthenticationDataTls.<init>(AuthenticationDataTls.java:41) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.auth.AuthenticationTls.getAuthData(AuthenticationTls.java:57) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        ... 15 more
Caused by: java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
        at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:217) ~[?:1.8.0_131]
        at java.security.KeyFactory.generatePrivate(KeyFactory.java:372) ~[?:1.8.0_131]
        at org.apache.pulsar.common.util.SecurityUtility.loadPrivateKeyFromPemFile(SecurityUtility.java:202) ~[pulsar-common-2.2.5-x.jar:2.2.5-x]
        at org.apache.pulsar.client.impl.auth.AuthenticationDataTls.<init>(AuthenticationDataTls.java:41) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.auth.AuthenticationTls.getAuthData(AuthenticationTls.java:57) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        ... 15 more
Caused by: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
        at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:351) ~[?:1.8.0_131]
        at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:356) ~[?:1.8.0_131]
        at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:91) ~[?:1.8.0_131]
        at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:75) ~[?:1.8.0_131]
        at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:316) ~[?:1.8.0_131]
        at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:213) ~[?:1.8.0_131]
        at java.security.KeyFactory.generatePrivate(KeyFactory.java:372) ~[?:1.8.0_131]
        at org.apache.pulsar.common.util.SecurityUtility.loadPrivateKeyFromPemFile(SecurityUtility.java:202) ~[pulsar-common-2.2.5-x.jar:2.2.5-x]
        at org.apache.pulsar.client.impl.auth.AuthenticationDataTls.<init>(AuthenticationDataTls.java:41) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        at org.apache.pulsar.client.impl.auth.AuthenticationTls.getAuthData(AuthenticationTls.java:57) ~[pulsar-client-original-2.2.5-x.jar:2.2.6-x]
        ... 15 more

And it can be fixed by loading BouncyCastle Security Provider.

@sijie
Copy link
Copy Markdown
Member

sijie commented Jan 31, 2019

run cpp tests
run java8 tests

@rdhabalia
Copy link
Copy Markdown
Contributor Author

run java8 tests

1 similar comment
@sijie
Copy link
Copy Markdown
Member

sijie commented Feb 4, 2019

run java8 tests

@merlimat merlimat merged commit a7f6e8b into apache:master Feb 4, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants