MacでAWS IoTにつなごうとしたらはまったのでメモ。
(この記事を書いた時の状況です。後ほど改善される可能性は大いにあります。)
構成
- Mac OSX ElCapitan 10.11.3
- Mqtt-spy 0.4.0
手順
- Mqtt-spyでAWS IoTのURLやら証明書の設定をします。
- "Client key in PEM format"のチェックボックスをONにします。(地味にこれが0.3.0との差分)
- 以下のエラーが発生します。どうも0.4.0をMacで使うとこのエラーで手詰まりらしい。
pl.baczkowicz.spy.exceptions.ConfigurationException: Invalid configuration parameters
at pl.baczkowicz.mqttspy.connectivity.MqttConnectionDetailsWithOptions.<init>(MqttConnectionDetailsWithOptions.java:91)
at pl.baczkowicz.mqttspy.connectivity.RuntimeConnectionProperties.<init>(RuntimeConnectionProperties.java:34)
at pl.baczkowicz.mqttspy.ui.connections.ConnectionManager.openConnection(ConnectionManager.java:160)
at pl.baczkowicz.mqttspy.ui.EditConnectionController$6.run(EditConnectionController.java:447)
at com.sun.javafx.application.PlatformImpl.lambda$null$156(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$157(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
Caused by: pl.baczkowicz.spy.exceptions.SpyException: Cannot create TLS/SSL connection
at pl.baczkowicz.spy.security.SecureSocketFactoryBuilder.getSocketFactory(SecureSocketFactoryBuilder.java:100)
at pl.baczkowicz.mqttspy.connectivity.MqttConnectionDetailsWithOptions.populateMqttConnectOptions(MqttConnectionDetailsWithOptions.java:175)
at pl.baczkowicz.mqttspy.connectivity.MqttConnectionDetailsWithOptions.<init>(MqttConnectionDetailsWithOptions.java:87)
... 7 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)
at java.security.KeyFactory.generatePrivate(KeyFactory.java:379)
at pl.baczkowicz.spy.security.SecureSocketUtils.loadPrivateKeyFromPemFile(SecureSocketUtils.java:96)
at pl.baczkowicz.spy.security.SecureSocketUtils.getKeyManagerFactory(SecureSocketUtils.java:185)
at pl.baczkowicz.spy.security.SecureSocketFactoryBuilder.getSocketFactory(SecureSocketFactoryBuilder.java:93)
... 9 more
Caused by: java.security.InvalidKeyException: IOException : algid parse error, not a sequence
at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:351)
at sun.security.pkcs.PKCS8Key.decode(PKCS8Key.java:356)
at sun.security.rsa.RSAPrivateCrtKeyImpl.<init>(RSAPrivateCrtKeyImpl.java:91)
at sun.security.rsa.RSAPrivateCrtKeyImpl.newKey(RSAPrivateCrtKeyImpl.java:75)
at sun.security.rsa.RSAKeyFactory.generatePrivate(RSAKeyFactory.java:316)
at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:213)
... 13 more
解決策
0.5.0を使ってください。(betaでも大丈夫)
同じ設定で接続すればつながります。
こんなん嵌るわ。0.4.0でBugFixされることを願います。