net :: ERR_CERT_COMMON_NAME_INVALID с использованием nets's WebSocket - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть сервер WSS с сертификацией.Веб-клиент HTTPS пытается подключиться к моему WSS-серверу, чтобы получать данные через этот сокет.Клиент получает ERR_CERT_COMMON_NAME_INVALID, без исключений в обработчиках netty.Сервер во многом похож на пример nettty WSS с небольшим изменением - я не использую SelfSignedCertificate, так как мне нужно использовать собственную сертификацию.Это код начальной загрузки сервера:

    private ServerBootstrap b;
private EventLoopGroup bossGroup;
private EventLoopGroup workerGroup;
final SslContext sslCtx;

public NettyWebSocketServer(ServerProperties srvProp, ConcurrentExecutor executor) {
    super(srvProp, executor);
    bossGroup = new NioEventLoopGroup(1);
    workerGroup = new NioEventLoopGroup(1);

// setExecutorService (workerGroup);

    try {
        if (srvProp.isSsl()) {
            File privateKeyFile = new File("/home/ec2-user/webup/myKey.key");

            File certificateFile = new File("/home/ec2-user/webup/myCert.crt");
            if (privateKeyFile.exists()) {
                System.out.println("private Key File created: " + FileUtil.getFileContent(privateKeyFile));
            }
            if (certificateFile.exists()) {
                System.out.println("certificate File created: " + FileUtil.getFileContent(certificateFile));
            }
            sslCtx = SslContextBuilder.forServer(certificateFile, privateKeyFile).build();
            if (sslCtx != null) {
                System.out.println("SSL context created! isServer=" + sslCtx.isServer());
            }
        } else {
            sslCtx = null;
        }
        b = new ServerBootstrap();

        b.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .handler(new LoggingHandler(LogLevel.INFO))
                .childHandler(srvProp.isSsl() ?
                        new WssServerInitializer(this, sslCtx) : new WebSocketServerInitializer(this))
                .option(ChannelOption.TCP_NODELAY, true);
    } catch (SSLException e) {
        throw new RuntimeException(e);
    }
}

@Override
public void start() throws InterruptedException {

    try {
        Channel ch = b.bind(/*srvProp.getAddress(),*/ srvProp.getPort()).sync().channel();
        localAddress = ((InetSocketAddress) ch.localAddress()).getAddress().getHostAddress();
        Log.write("Open your web browser and navigate to " +
                (getServerProperties().isSsl() ? "https" : "http") + "://" + srvProp.getAddress() + ":" + srvProp.getPort() + '/');
        System.out.println("\nNettyWebSocketServer started on " + srvProp.getServerShortInfo() + '\n');
        ch.closeFuture().sync();
    } finally {
        bossGroup.shutdownGracefully();
        workerGroup.shutdownGracefully();
    }

}
...