如何在端口80上执行SSL操作

用户

我有一个server.java文件为:

import javax.net.ssl.*;
import java.io.*;
//*****************
public class Server
{
    public static void main(String[] args)
    {
        try {
            SSLServerSocketFactory sslserversocketfactory = (SSLServerSocketFactory)SSLServerSocketFactory.getDefault();
            SSLServerSocket sslserversocket =(SSLServerSocket)sslserversocketfactory.createServerSocket(80);

            SSLSocket sslsocket = (SSLSocket)
            sslserversocket.accept();

            InputStream is = sslsocket.getInputStream();
            InputStreamReader isr = new
            InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);
            String string = null;

            while ((string = br.readLine()) != null)
            {
            System.out.println(string);
            System.out.flush();
            }
        } 

        catch (Exception e){
            e.printStackTrace();
        }
    }
}

和一个Client.java文件为:

import javax.net.ssl.*;
import java.io.*;
//*****************
public class Client
{
    public static void main(String[] args)
    {
        try {
            SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
            SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("127.0.0.1", 80);

            InputStream is = System.in;
            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);
            OutputStream os = sslsocket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);

            String string = null;
            while ((string = br.readLine()) != null)
            {
            bw.write(string + '\n');
            bw.flush();
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
}

我也创建了自己的证书,像这样:

C:\Temp>keytool -genkey -keystore myCertificate -keyalg RSA
Enter keystore password: abcdefg
Re-enter new password: abcdefg
What is your first and last name?
[Unknown]: first last
What is the name of your organizational unit?
[Unknown]: cs
What is the name of your organization?
[Unknown]: stackoverflow
What is the name of your City or Locality?
[Unknown]: NYC
What is the name of your State or Province?
[Unknown]: NY
What is the two-letter country code for this unit?
[Unknown]: us
Is CN=first last, OU=cs, O=stackoverflow, L=NYC, ST=NY, C=us correct?
[no]: yes
Enter key password for <mykey>
(RETURN if same as keystore password):

但无论我做什么,我总是收到以下错误消息:

main, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during
handshake
main, SEND TLSv1 ALERT:  fatal, description = handshake_failure
main, WRITE: TLSv1 Alert, length = 2
main, called closeSocket()
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
        at sun.security.ssl.AppOutputStream.write(Unknown Source)
        at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
        at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
        at sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
        at sun.nio.cs.StreamEncoder.flush(Unknown Source)
        at java.io.OutputStreamWriter.flush(Unknown Source)
        at java.io.BufferedWriter.flush(Unknown Source)
        at Client.main(Client.java:25)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
        at sun.security.ssl.InputRecord.read(Unknown Source)
        ... 11 more

我担心的是,如果我将端口从80更改为其他端口,代码可以正常工作,但是我必须专门在此端口上工作。证书和两个Java文件都在同一文件夹中你们能帮我找出一种在端口80上执行SSL操作的方法吗?

用户

我想出了一个解决办法。

基本上,我所做的工作是使用Java的密钥库生成一个keystore.jks文件,然后使用SSLContext使我的密钥库证书有效,因此在端口80上执行SSL。

感谢您的帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在端口80上运行python瓶?

来自分类Dev

如何在端口80上启动python SimpleHTTPServer?

来自分类Dev

他们如何在端口80上阻塞RDP?

来自分类Dev

如何配置Jenkins在端口80上运行

来自分类Dev

Teamviewer如何在端口80上工作?

来自分类Dev

如何在ubuntu中杀死端口80

来自分类Dev

如何在端口80上运行Boost.Asio服务器?

来自分类Dev

多个应用程序如何在同一端口(80)上侦听?

来自分类Dev

如何在Linux服务器的端口80上启动node.js?

来自分类Dev

我如何在端口80上获取node.js express.js

来自分类Dev

如何在本地主机的端口80上运行laravel 5?

来自分类Dev

如何在端口80上运行Spring Boot应用程序

来自分类Dev

如何在centos 7上为我的tomcat 7绑定端口80

来自分类Dev

如何在端口80上使用Ubuntu服务器17截屏

来自分类Dev

如何在centos 7上为我的tomcat 7绑定端口80

来自分类Dev

如何在没有root的端口80上运行Python 3 http.server?

来自分类Dev

如何在没有sudo访问的情况下在端口80上运行Express App

来自分类Dev

如何在端口 80 上运行两个网站(可从 2 个 DNS 记录访问)

来自分类Dev

如何在端口 80 上运行气流网络服务器

来自分类Dev

如何在setcap的帮助下将端口80上的远程端口转发到我的本地主机?

来自分类Dev

端口80上的服务

来自分类Dev

如何在J类上执行数组操作?

来自分类Dev

版本控制如何在Google上执行操作?

来自分类Dev

如何在Redis哈希上执行地理空间操作

来自分类Dev

如何在Haskell中的类型上执行分散/聚集操作?

来自分类Dev

如何在click tableViewCell上执行不同的操作

来自分类Dev

jcabi如何在@RetryOnFailure上执行新操作

来自分类Dev

如何在ngMaterial的$ mdSidenav上执行原始操作?

来自分类Dev

如何使Jetty Web服务器在端口80上侦听?

Related 相关文章

  1. 1

    如何在端口80上运行python瓶?

  2. 2

    如何在端口80上启动python SimpleHTTPServer?

  3. 3

    他们如何在端口80上阻塞RDP?

  4. 4

    如何配置Jenkins在端口80上运行

  5. 5

    Teamviewer如何在端口80上工作?

  6. 6

    如何在ubuntu中杀死端口80

  7. 7

    如何在端口80上运行Boost.Asio服务器?

  8. 8

    多个应用程序如何在同一端口(80)上侦听?

  9. 9

    如何在Linux服务器的端口80上启动node.js?

  10. 10

    我如何在端口80上获取node.js express.js

  11. 11

    如何在本地主机的端口80上运行laravel 5?

  12. 12

    如何在端口80上运行Spring Boot应用程序

  13. 13

    如何在centos 7上为我的tomcat 7绑定端口80

  14. 14

    如何在端口80上使用Ubuntu服务器17截屏

  15. 15

    如何在centos 7上为我的tomcat 7绑定端口80

  16. 16

    如何在没有root的端口80上运行Python 3 http.server?

  17. 17

    如何在没有sudo访问的情况下在端口80上运行Express App

  18. 18

    如何在端口 80 上运行两个网站(可从 2 个 DNS 记录访问)

  19. 19

    如何在端口 80 上运行气流网络服务器

  20. 20

    如何在setcap的帮助下将端口80上的远程端口转发到我的本地主机?

  21. 21

    端口80上的服务

  22. 22

    如何在J类上执行数组操作?

  23. 23

    版本控制如何在Google上执行操作?

  24. 24

    如何在Redis哈希上执行地理空间操作

  25. 25

    如何在Haskell中的类型上执行分散/聚集操作?

  26. 26

    如何在click tableViewCell上执行不同的操作

  27. 27

    jcabi如何在@RetryOnFailure上执行新操作

  28. 28

    如何在ngMaterial的$ mdSidenav上执行原始操作?

  29. 29

    如何使Jetty Web服务器在端口80上侦听?

热门标签

归档