java - Client ECC SSL Certificate contains "unknown named curve" -
question precontext: working in existing library uses ssl netty framework on remote server. running ssl/tls handshake error. error follows:
javax.net.ssl.sslprotocolexception: java.io.ioexception: unknown named curve: 1.2.840.10045.3.1.1 @ sun.security.ssl.handshaker.checkthrown(handshaker.java:1345) ~[na:1.7.0_79] @ sun.security.ssl.sslengineimpl.checktaskthrown(sslengineimpl.java:519) ~[na:1.7.0_79] @ sun.security.ssl.sslengineimpl.readnetrecord(sslengineimpl.java:799) ~[na:1.7.0_79] @ sun.security.ssl.sslengineimpl.unwrap(sslengineimpl.java:767) ~[na:1.7.0_79] @ javax.net.ssl.sslengine.unwrap(sslengine.java:624) ~[na:1.7.0_79] @ io.netty.handler.ssl.sslhandler.unwrap(sslhandler.java:982) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.handler.ssl.sslhandler.unwrap(sslhandler.java:908) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.handler.ssl.sslhandler.decode(sslhandler.java:854) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.handler.codec.bytetomessagedecoder.calldecode(bytetomessagedecoder.java:249) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.handler.codec.bytetomessagedecoder.channelread(bytetomessagedecoder.java:149) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.abstractchannelhandlercontext.invokechannelread(abstractchannelhandlercontext.java:333) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.abstractchannelhandlercontext.firechannelread(abstractchannelhandlercontext.java:319) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.defaultchannelpipeline.firechannelread(defaultchannelpipeline.java:787) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.nio.abstractniobytechannel$niobyteunsafe.read(abstractniobytechannel.java:130) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.nio.nioeventloop.processselectedkey(nioeventloop.java:511) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.nio.nioeventloop.processselectedkeysoptimized(nioeventloop.java:468) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.nio.nioeventloop.processselectedkeys(nioeventloop.java:382) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.channel.nio.nioeventloop.run(nioeventloop.java:354) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.util.concurrent.singlethreadeventexecutor$2.run(singlethreadeventexecutor.java:116) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.util.concurrent.defaultthreadfactory$defaultrunnabledecorator.run(defaultthreadfactory.java:137) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ java.lang.thread.run(thread.java:745) ~[na:1.7.0_79] caused by: javax.net.ssl.sslprotocolexception: java.io.ioexception: unknown named curve: 1.2.840.10045.3.1.1 @ sun.security.ssl.handshakemessage$certificatemsg.<init>(handshakemessage.java:451) ~[na:1.7.0_79] @ sun.security.ssl.serverhandshaker.processmessage(serverhandshaker.java:222) ~[na:1.7.0_79] @ sun.security.ssl.handshaker.processloop(handshaker.java:901) ~[na:1.7.0_79] @ sun.security.ssl.handshaker$1.run(handshaker.java:841) ~[na:1.7.0_79] @ sun.security.ssl.handshaker$1.run(handshaker.java:839) ~[na:1.7.0_79] @ java.security.accesscontroller.doprivileged(native method) ~[na:1.7.0_79] @ sun.security.ssl.handshaker$delegatedtask.run(handshaker.java:1273) ~[na:1.7.0_79] @ io.netty.handler.ssl.sslhandler.rundelegatedtasks(sslhandler.java:1015) ~[netty-all-4.0.23.final.jar:4.0.23.final] @ io.netty.handler.ssl.sslhandler.unwrap(sslhandler.java:927) ~[netty-all-4.0.23.final.jar:4.0.23.final] ... 14 common frames omitted caused by: java.security.cert.certificateparsingexception: java.io.ioexception: unknown named curve: 1.2.840.10045.3.1.1 @ sun.security.x509.x509certinfo.<init>(x509certinfo.java:171) ~[na:1.7.0_79] @ sun.security.x509.x509certimpl.parse(x509certimpl.java:1781) ~[na:1.7.0_79] @ sun.security.x509.x509certimpl.<init>(x509certimpl.java:196) ~[na:1.7.0_79] @ sun.security.provider.x509factory.enginegeneratecertificate(x509factory.java:97) ~[na:1.7.0_79] @ java.security.cert.certificatefactory.generatecertificate(certificatefactory.java:339) ~[na:1.7.0_79] @ sun.security.ssl.handshakemessage$certificatemsg.<init>(handshakemessage.java:449) ~[na:1.7.0_79] ... 22 common frames omitted caused by: java.io.ioexception: unknown named curve: 1.2.840.10045.3.1.1 @ sun.security.ec.ecparameters.decodeparameters(ecparameters.java:197) ~[na:1.7.0_79] @ sun.security.ec.ecparameters.engineinit(ecparameters.java:319) ~[na:1.7.0_79] @ java.security.algorithmparameters.init(algorithmparameters.java:293) ~[na:1.7.0_79] @ sun.security.x509.algorithmid.decodeparams(algorithmid.java:139) ~[na:1.7.0_79] @ sun.security.x509.algorithmid.<init>(algorithmid.java:114) ~[na:1.7.0_79] @ sun.security.x509.algorithmid.parse(algorithmid.java:382) ~[na:1.7.0_79] @ sun.security.x509.x509key.parse(x509key.java:168) ~[na:1.7.0_79] @ sun.security.x509.certificatex509key.<init>(certificatex509key.java:75) ~[na:1.7.0_79] @ sun.security.x509.x509certinfo.parse(x509certinfo.java:705) ~[na:1.7.0_79] @ sun.security.x509.x509certinfo.<init>(x509certinfo.java:169) ~[na:1.7.0_79] ... 27 common frames omitted
now, here approach try solving issue @ hand. remote server requires client authentication , certificate 1 uses elliptic curves (using client certificate different public key algorithms , signature algorithms not cause error meaning client certificate @ fault here). ran
openssl x509 -in <client_cert> -text -noout
the client certificate follows: certificate: data: version: 3 (0x2) serial number: 3585039615565000225 (0x31c09e8937746e21) signature algorithm: ecdsa-with-sha1 issuer: <issuer> validity not before: dec 1 23:01:26 2014 gmt not after : nov 26 23:01:26 2034 gmt subject: 1.3.6.1.4.1.41387.1.1=18b43000004c627b subject public key info: public key algorithm: id-ecpublickey public-key: (192 bit) pub: 04:dc:ca:07:76:de:28:91:b8:94:16:08:12:01:85: 24:a5:a5:5e:48:84:aa:2b:f8:3a:fa:87:f1:30:70: f3:7b:01:68:6a:f6:29:56:c7:17:60:71:fe:b7:c0: d1:d5:1c:ad asn1 oid: prime192v1 nist curve: p-192 x509v3 extensions: x509v3 basic constraints: critical ca:false x509v3 key usage: critical digital signature, key encipherment x509v3 extended key usage: critical tls web client authentication, tls web server authentication x509v3 subject key identifier: <subject key identifier> x509v3 authority key identifier: keyid: <key id> signature algorithm: ecdsa-with-sha1 <signature goes here>
this leaves me under impression nist p-192 curve not being recognized jdk ssl library. jdk version running 1.7.0_79. don't know how proceed fixing this. ideas?
this might related encryption issue, rather ssl issue. have tried using unlimited strength jurisdiction policy files?
Comments
Post a Comment