java - JxBrowser 在加载 Google 站点时显示 ssl 错误

标签 java ssl javafx jxbrowser

大家好。我正在使用 JxBrowser 显示网页,但在连接到 Google 站点时出现 ssl 错误:

SSL Google Error

SSL YouTube Error

但它适用于像维基百科这样的网站:

Wikipedia

这是启动时运行的代码,用于在新标签页中加载 google.com:

private void createNewTab(){
    Tab tempTab = new Tab();
    tempTab.setText("New Tab");
    AnchorPane tempAnchorPane = new AnchorPane();
    Browser tempBrowser = new Browser();
    BrowserView view = new BrowserView(tempBrowser);
    view.getBrowser().loadURL("https://google.com");        

    tempAnchorPane.getChildren().add(view);
    tempAnchorPane.setTopAnchor(view, 0.0);
    tempAnchorPane.setLeftAnchor(view, 0.0);
    tempAnchorPane.setRightAnchor(view, 0.0);
    tempAnchorPane.setBottomAnchor(view, 0.0);
    browserToTabMap.put(tempBrowser, tempTab);

    tempTab.setContent(view);
    rootPane.getTabs().add(tempTab);
}

以及在启动时调用该函数的代码:

@FXML
void initialize() {
    assert rootPane != null : "fx:id=\"rootPane\" was not injected: check your FXML file 'Expedition.fxml'.";
    assert addressBar != null : "fx:id=\"addressBar\" was not injected: check your FXML file 'Expedition.fxml'.";




    BrowserView view = new BrowserView();
    root.addEventFilter(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>(){
        @Override
        public void handle(KeyEvent event) {
            if(processKeys(event)){
                System.out.println("Consuming event " + event);
                event.consume();
            }                    
        }
    });
    root.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>(){
        @Override
        public void handle(KeyEvent event) {
            if(event.getCode() == KeyCode.ESCAPE){
                insertMode = false;
                System.out.println("Coming out of insert mode");
                rootPane.getSelectionModel().getSelectedItem().getContent().requestFocus();
                event.consume();
            }
        }            
    });

    addressBar.focusedProperty().addListener(new ChangeListener<Boolean>(){
        @Override
        public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue)
        {
            if (newPropertyValue)
            {
                System.out.println("addressBar focused");
            }
            else
            {
                System.out.println("addressBar out of focus");
                insertMode = false;
            }
        }
    });

    createNewTab();

    Runnable temp = () -> {
        try{
            Thread.sleep(5000);
        }
        catch(InterruptedException exc){

        }
        Platform.runLater(new Runnable(){
            @Override public void run(){
                ((Stage)rootPane.getScene().getWindow()).setMaximized(true);
                rootPane.getSelectionModel().getSelectedItem().getContent().requestFocus();
            }                
        });             
    };
    Thread tempThr = new Thread(temp);
    temp.run();
    currentTab = 0;
}

以下是 JxBrowser 命令行输出的日志:

04:52:38 INFO: OS name: Linux
04:52:38 INFO: JRE version: 1.8.0_77 32-bit
04:52:38 INFO: JxBrowser version: 6.3
04:52:38 INFO: JxBrowser type: HEAVYWEIGHT
04:52:38 INFO: Starting IPC...
04:52:38 INFO: Starting IPC Server...
04:52:38 INFO: Starting socket server
04:52:38 INFO: Starting socket server at port 1101...
04:52:38 INFO: Starting IPC Process...
04:52:38 INFO: Starting Chromium process...
04:52:38 INFO: The '/lib/i386-linux-gnu/libudev.so.0' library exists: FALSE
04:52:38 INFO: The '/tmp/jxbrowser-chromium-43.0.2357.52.6.3/libudev.so.0' library exists: TRUE
04:52:38 INFO: The '/lib/i386-linux-gnu/libgcrypt.so.11' library exists: FALSE
04:52:38 INFO: The '/tmp/jxbrowser-chromium-43.0.2357.52.6.3/libgcrypt.so.11' library exists: TRUE
04:52:38 INFO: The '/lib/i386-linux-gnu/libcrypto.so.1.0.0' library exists: FALSE
04:52:38 INFO: The '/tmp/jxbrowser-chromium-43.0.2357.52.6.3/libcrypto.so.1.0.0' library exists: TRUE
04:52:38 INFO: Command line: /tmp/jxbrowser-chromium-43.0.2357.52.6.3/jxbrowser-chromium 1101 2069 
04:52:39 INFO: [0511/165239:ERROR:browser_main_loop.cc(172)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
04:52:39 INFO: Shared Memory Name: JXB1-2069
04:52:39 INFO: IPC connection has been established. Connection ID: 152876992
04:52:39 INFO: READ:  OnHelloMessage{type=OnHelloMessage, uid=1, message='cid:0,type:Main'}, null
04:52:39 INFO: Channel has been accepted: SocketChannel{cid=0, bid=-1, type=Main}
04:52:39 INFO: IPC is started.
04:52:39 INFO: WRITE: CreateBrowserMessage{type=CreateBrowser, uid=0, channelId=0, contextId=-1, cacheDir='/tmp/jxbrowser-chromium-43.0.2357.52.6.3/data/Cache', memoryDir='/tmp/jxbrowser-chromium-43.0.2357.52.6.3/data/Memory', dataDir='/tmp/jxbrowser-chromium-43.0.2357.52.6.3/data', currentLocale='en-us', proxyType=-1, proxyRules='null', proxyBypassRules='null', proxyAutoConfigURL='null', defaultZoomLevel=0.0, isOffScreenMode=false}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:39 INFO: Shared Memory Name: JXB2-2069
04:52:39 INFO: IPC connection has been established. Connection ID: 149372272
04:52:39 INFO: [0511/165239:FATAL:scoped_file.cc(29)] Check failed: 0 == IGNORE_EINTR(close(fd)). : Bad file descriptor
04:52:39 INFO: READ:  OnHelloMessage{type=OnHelloMessage, uid=2, message='cid:0,bid:0,type:Browser'}, null
04:52:39 INFO: Channel has been accepted: SocketChannel{cid=0, bid=0, type=Browser}
04:52:39 INFO: Channel is connected: SocketChannel{cid=0, bid=0, type=Browser}
04:52:39 INFO: WRITE: SetNetworkDelegateConfigMessage{type=SetNetworkDelegateConfig, uid=1, browserContextId=-1, disableMessages=true}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:39 INFO: WRITE: LoadURLMessage{type=LoadURL, uid=2, url='about:blank', frameId=-1, extraHeaders='null', postData=null}, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:40 INFO: READ:  com.teamdev.jxbrowser.chromium.internal.ipc.message.OnRenderViewCreatedMessage@118143, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:40 INFO: [0511/165240:ERROR:renderer_main.cc(200)] Running without renderer sandbox
04:52:40 INFO: Shared Memory Name: JXB3-2069
04:52:40 INFO: IPC connection has been established. Connection ID: 149380056
04:52:40 INFO: READ:  OnHelloMessage{type=OnHelloMessage, uid=1, message='cid:0,bid:0,type:Render'}, null
04:52:40 INFO: Channel has been accepted: SocketChannel{cid=0, bid=0, type=Render}
04:52:40 INFO: Channel is connected: SocketChannel{cid=0, bid=0, type=Render}
04:52:40 INFO: READ:  OnHandleLoadMessage{type=OnHandleLoadMessage, uid=2, url='about:blank', loadType=5, loadPolicy=2, isBackForward=false, isRedirect=false, cancel=false}, SocketInfo{cid=0, bid=0, channelType=Render}
04:52:40 INFO: WRITE: OnHandleLoadMessage{type=OnHandleLoadMessage, uid=2, url='about:blank', loadType=5, loadPolicy=2, isBackForward=false, isRedirect=false, cancel=false}, SocketInfo{cid=0, bid=0, channelType=Render}
04:52:41 INFO: READ:  OnDidStartProvisionalLoadForFrameMessage{type=OnDidStartProvisionalLoadForFrame, uid=4, frameId=1, parentFrameId=-1, isMainFrame=true, validatedURL='about:blank', isErrorPage=false}, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:41 INFO: READ:  OnDidCommitProvisionalLoadForFrameMessage{type=OnDidCommitProvisionalLoadForFrame, uid=5, frameId=1, isMainFrame=true, transitionType=1, url='about:blank'}, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:41 INFO: READ:  OnStatusChangeMessage{type=OnStatusChangeMessage, uid=6, url=''}, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:41 INFO: READ:  OnDocumentLoadedInFrameMessage{type=OnDocumentLoadedInFrame, uid=7, frameId=1, isMainFrame=true}, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:41 INFO: READ:  OnDidFinishLoadMessage{type=OnDidFinishLoad, uid=8, frameId=1, isMainFrame=true, validatedURL='about:blank'}, SocketInfo{cid=0, bid=0, channelType=Browser}
04:52:41 INFO: JxBrowser type: HEAVYWEIGHT
04:52:41 INFO: Starting IPC...
04:52:41 INFO: IPC is already started.
04:52:41 INFO: WRITE: CreateBrowserMessage{type=CreateBrowser, uid=3, channelId=1, contextId=-1, cacheDir='/tmp/jxbrowser-chromium-43.0.2357.52.6.3/data/Cache', memoryDir='/tmp/jxbrowser-chromium-43.0.2357.52.6.3/data/Memory', dataDir='/tmp/jxbrowser-chromium-43.0.2357.52.6.3/data', currentLocale='en-us', proxyType=-1, proxyRules='null', proxyBypassRules='null', proxyAutoConfigURL='null', defaultZoomLevel=0.0, isOffScreenMode=false}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:41 INFO: Shared Memory Name: JXB4-2069
04:52:41 INFO: IPC connection has been established. Connection ID: 152274456
04:52:41 INFO: READ:  OnHelloMessage{type=OnHelloMessage, uid=9, message='cid:1,bid:1,type:Browser'}, null
04:52:41 INFO: Channel has been accepted: SocketChannel{cid=1, bid=1, type=Browser}
04:52:41 INFO: Channel is connected: SocketChannel{cid=1, bid=1, type=Browser}
04:52:41 INFO: WRITE: SetNetworkDelegateConfigMessage{type=SetNetworkDelegateConfig, uid=4, browserContextId=-1, disableMessages=true}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:41 INFO: WRITE: LoadURLMessage{type=LoadURL, uid=5, url='about:blank', frameId=-1, extraHeaders='null', postData=null}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  com.teamdev.jxbrowser.chromium.internal.ipc.message.OnRenderViewCreatedMessage@1c7f150, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: [0511/165241:ERROR:renderer_main.cc(200)] Running without renderer sandbox
04:52:41 INFO: Shared Memory Name: JXB5-2069
04:52:41 INFO: IPC connection has been established. Connection ID: 152275960
04:52:41 INFO: READ:  OnHelloMessage{type=OnHelloMessage, uid=1, message='cid:1,bid:1,type:Render'}, null
04:52:41 INFO: Channel has been accepted: SocketChannel{cid=1, bid=1, type=Render}
04:52:41 INFO: Channel is connected: SocketChannel{cid=1, bid=1, type=Render}
04:52:41 INFO: READ:  OnHandleLoadMessage{type=OnHandleLoadMessage, uid=2, url='about:blank', loadType=5, loadPolicy=2, isBackForward=false, isRedirect=false, cancel=false}, SocketInfo{cid=1, bid=1, channelType=Render}
04:52:41 INFO: WRITE: OnHandleLoadMessage{type=OnHandleLoadMessage, uid=2, url='about:blank', loadType=5, loadPolicy=2, isBackForward=false, isRedirect=false, cancel=false}, SocketInfo{cid=1, bid=1, channelType=Render}
04:52:41 INFO: READ:  OnDidStartProvisionalLoadForFrameMessage{type=OnDidStartProvisionalLoadForFrame, uid=11, frameId=1, parentFrameId=-1, isMainFrame=true, validatedURL='about:blank', isErrorPage=false}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  OnDidCommitProvisionalLoadForFrameMessage{type=OnDidCommitProvisionalLoadForFrame, uid=12, frameId=1, isMainFrame=true, transitionType=1, url='about:blank'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  OnStatusChangeMessage{type=OnStatusChangeMessage, uid=13, url=''}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  OnDocumentLoadedInFrameMessage{type=OnDocumentLoadedInFrame, uid=14, frameId=1, isMainFrame=true}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  OnDidFinishLoadMessage{type=OnDidFinishLoad, uid=15, frameId=1, isMainFrame=true, validatedURL='about:blank'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: WRITE: LoadURLMessage{type=LoadURL, uid=6, url='https://google.com', frameId=-1, extraHeaders='null', postData=null}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  OnHandleLoadMessage{type=OnHandleLoadMessage, uid=3, url='https://google.com/', loadType=5, loadPolicy=2, isBackForward=false, isRedirect=false, cancel=false}, SocketInfo{cid=1, bid=1, channelType=Render}
04:52:41 INFO: WRITE: OnHandleLoadMessage{type=OnHandleLoadMessage, uid=3, url='https://google.com/', loadType=5, loadPolicy=2, isBackForward=false, isRedirect=false, cancel=false}, SocketInfo{cid=1, bid=1, channelType=Render}
04:52:41 INFO: READ:  OnDidStartProvisionalLoadForFrameMessage{type=OnDidStartProvisionalLoadForFrame, uid=16, frameId=1, parentFrameId=-1, isMainFrame=true, validatedURL='https://google.com/', isErrorPage=false}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:41 INFO: READ:  OnShouldBeginRequestMessage{type=OnShouldBeginRequest, uid=17, browserContextId=-1, url='https://google.com/', method='GET', resourceType=0, cancel=false}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:41 INFO: WRITE: OnShouldBeginRequestMessage{type=OnShouldBeginRequest, uid=17, browserContextId=-1, url='https://google.com/', method='GET', resourceType=0, cancel=false}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:41 INFO: READ:  OnCanGetCookiesMessage{type=OnCanGetCookies, uid=18, url='https://google.com/', cookies='', browserContextId=-1, canGetCookies=true}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:41 INFO: WRITE: OnCanGetCookiesMessage{type=OnCanGetCookies, uid=18, url='https://google.com/', cookies='', browserContextId=-1, canGetCookies=true}, SocketInfo{cid=0, bid=-1, channelType=Main}
04:52:43 INFO: [0511/165243:WARNING:nss_ssl_util.cc(370)] Unknown SSL error -12218 (SSL_ERROR_ENCRYPTION_FAILURE) mapped to net::ERR_SSL_PROTOCOL_ERROR
04:52:45 INFO: READ:  OnDidFailProvisionalLoadMessage{type=OnDidFailProvisionalLoad, uid=19, frameId=1, isMainFrame=true, validatedURL='https://google.com/', errorCode=-107, errorDescription='SSL protocol error.'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:45 INFO: READ:  OnDidStartProvisionalLoadForFrameMessage{type=OnDidStartProvisionalLoadForFrame, uid=20, frameId=1, parentFrameId=-1, isMainFrame=true, validatedURL='data:text/html,chromewebdata', isErrorPage=true}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:45 INFO: READ:  OnDidCommitProvisionalLoadForFrameMessage{type=OnDidCommitProvisionalLoadForFrame, uid=21, frameId=1, isMainFrame=true, transitionType=1, url='https://google.com/'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:45 INFO: READ:  OnStatusChangeMessage{type=OnStatusChangeMessage, uid=22, url=''}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:45 INFO: READ:  OnDocumentAvailableInMainFrameMessage{type=OnDocumentAvailableInMainFrame, uid=23}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:45 INFO: READ:  OnDidCreateScriptContextMessage{type=OnDidCreateScriptContext, uid=4, frameId=-1, contextPtr=149308800}, SocketInfo{cid=1, bid=1, channelType=Render}
04:52:45 INFO: WRITE: OnDidCreateScriptContextMessage{type=OnDidCreateScriptContext, uid=4, frameId=-1, contextPtr=149308800}, SocketInfo{cid=1, bid=1, channelType=Render}
04:52:45 INFO: READ:  OnTitleChangeMessage{type=OnTitleChange, uid=24, title='https://google.com/ failed to load'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:45 INFO: READ:  OnDocumentLoadedInFrameMessage{type=OnDocumentLoadedInFrame, uid=25, frameId=1, isMainFrame=true}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:46 INFO: READ:  OnDidFinishLoadMessage{type=OnDidFinishLoad, uid=26, frameId=1, isMainFrame=true, validatedURL='data:text/html,chromewebdata'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameMovedMessage{type=FrameMoved, uid=7, x=13, y=113, width=1000, height=937}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameSetBoundsMessage{type=FrameSetBounds, uid=8, x=0, y=62, width=1000, height=937}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameMovedMessage{type=FrameMoved, uid=9, x=13, y=113, width=1000, height=937}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameFocusMessage{type=FrameFocus, uid=10, focus=false}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameAttachMessage{type=FrameAttach, uid=11, windowHandle=62914563}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: SetDragDropEnabledMessage{type=SetDragDropEnabled, uid=12, enabled='true'}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameSetBoundsMessage{type=FrameSetBounds, uid=13, x=0, y=63, width=1000, height=937}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameMovedMessage{type=FrameMoved, uid=14, x=0, y=114, width=1024, height=630}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameSetBoundsMessage{type=FrameSetBounds, uid=15, x=0, y=63, width=1024, height=630}, SocketInfo{cid=1, bid=1, channelType=Browser}
04:52:48 INFO: WRITE: FrameMovedMessage{type=FrameMoved, uid=16, x=0, y=114, width=1024, height=630}, SocketInfo{cid=1, bid=1, channelType=Browser}

最佳答案

JxBrowser 6.3 基于 Chromium 43。据我所知,Chromium 43 在最新的 Linux 发行版(如 Ubuntu 15.10)上更新的 NSS 库有几个问题。根据 https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1547762 的错误报告低于 48 的 Chromium 版本与最新的 Ubuntu 安全更新不兼容,会破坏 Chromium 引擎中的 HTTPS 功能。在 Chromium 48 及更高版本中,该问题不可重现。

我们已经准备好 JxBrowser 6.4 的更新版本基于 Chromium 49。请在您的 Linux 环境中尝试一下,如果有帮助请告诉我。

关于java - JxBrowser 在加载 Google 站点时显示 ssl 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37173978/

相关文章:

node.js - Nodejs Https 认证

http - 连接测试导致 401 HTTP 错误

javascript - webEngine.executeScript();抛出异常

java - 使用一个 Controller 处理多个 JavaFX 按钮

java - 不完整的文件复制 Java NIO

java - 使用 MockBean 清理 Spring Context 缓存失败 loadLibrary

javascript - 如何从 Spark 获取数据并使用 Angular 显示

java - 在SD卡中添加多张图片

ssl - 如何为 IIS 6 创建自签名通配符 SSL 证书?

java - 媒体播放器 noSound OSX