簡體   English   中英

Eclipse Milo 證書

[英]Certificate in Eclipse Milo

我是 Milo 的新手,我遇到了一個問題:我必須使用 X509 證書在 milo 客戶端和服務器(都在本地主機上)之間建立連接。 為此,我使用了https://github.com/eclipse/milo/tree/master/milo-examples的 KeyStoreLoader 類,幾乎沒有改變它們。 服務器和客戶端都啟動沒有問題,但客戶端沒有連接,產生:

13:07:34.671 [main] INFO  milo_test.client.BrowseExample - security temp dir: /tmp/security
13:07:34.671 [main] INFO  milo_test.client.KeyStoreLoader - Loading KeyStore at /tmp/security/example-client.pem
13:07:35.417 [main] ERROR milo_test.client.ClientExampleRunner - Error running client example: UaServiceFaultException: status=Bad_SecurityChecksFailed, message=An error occurred verifying security.
    java.util.concurrent.ExecutionException: UaServiceFaultException: status=Bad_SecurityChecksFailed, message=An error occurred verifying security.
        at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
        at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
        at milo_test.client.BrowseExample.run(BrowseExample.java:35)
        at milo_test.client.ClientExampleRunner.run(ClientExampleRunner.java:121)
        at milo_test.client.BrowseExample.main(BrowseExample.java:27)
    Caused by: org.eclipse.milo.opcua.stack.core.UaServiceFaultException: status=Bad_SecurityChecksFailed, description=An error occurred verifying security.
        at org.eclipse.milo.opcua.stack.client.UaStackClient.lambda$deliverResponse$5(UaStackClient.java:275)
        at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task.run(ExecutionQueue.java:119)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    13:07:35.420 [ForkJoinPool.commonPool-worker-1] ERROR milo_test.client.ClientExampleRunner - Error running example: UaServiceFaultException: status=Bad_SecurityChecksFailed, message=An error occurred verifying security.

在 ClientExample 接口中,我有這個 getIdentityProvider() 方法:

default IdentityProvider getIdentityProvider() {
        //return new AnonymousProvider();
        //return new UsernameProvider("user", "pass");

        File securityTempDir = new File(System.getProperty("java.io.tmpdir"), "security");
        if (securityTempDir.exists() || securityTempDir.mkdirs()) {
            try {
                LoggerFactory.getLogger(getClass()).info("security temp dir: {}", securityTempDir.getAbsolutePath());
                KeyStoreLoader loader = new KeyStoreLoader().load(securityTempDir.toPath());
                return new X509IdentityProvider(loader.getClientCertificate(), loader.getClientKeyPair().getPrivate());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }

如果我使用 AnonymusProvider() 或 UsernameProvider() 一切正常。

現在,基於線程,我搜索了 securityTempDir,找到了服務器和客戶端證書以及正確的結構(/pki -> issuers,rejected and trust),但被拒絕的文件夾始終為空,無法移動證書變為可信。

我可能做錯了什么? 感謝所有可以幫助我的人!

您正在混合應用程序實例證書和用於身份驗證的單獨 X509 證書。 安全和 PKI 目錄對於獲得安全連接是必要的,但與基於 X509 的用戶身份驗證無關。

也就是說,我認為這可能是服務器 SDK 中的一個錯誤,如果您想在 GitHub 存儲庫中打開一個問題,我們可以在那里查看它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM