导航:首页 > IDC知识 > javassl服务器

javassl服务器

发布时间:2021-01-19 03:41:20

1、javamail的tls和ssl方式是什么意思

tls/ssl协议是安全通讯协议。这种协议目前各种大型邮件传输服务商都支持,有的专邮箱可属以设置没有这个协议不能发送邮件。其实不用太关注这个通讯协议,在使用javamail中使用tls/ssl也很简单:就是加一个配置而已,其他内容已经封装好了。

附:SSL/TLS 单向认证
用户到服务器之间存在单方面的认证,即客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。首先,客户端发起握手请求,服务器收到握手请求后,会选择适合双方的协议版本和加密方式。然后,再将协商的结果和服务器端的公钥一起发送给客户端。客户端利用服务器端的公钥,对要发送的数据进行加密,并发送给服务器端。服务器端收到后,会用本地私钥对收到的客户端加密数据进行解密。然后,通讯双方都会使用这些数据来产生双方之间通讯的加密密钥。接下来,双方就可以开始安全通讯过程了。

2、如何在Tomcat或其他基于Java的Web服务器下安装SSL证书

Tomcat支持SSL,并且用它确保机密数据的传输,如身份证号码和信用卡信息等。利用KeyTool程序生成一个public/private键对,同时选择一家可信任的授权机构,来创建和签发数字证书。

一旦收到证书,并将它导入到keystore后,下一步就是在服务器上安装证书了。如果使用的是Tomcat,复制放在服务器某个位置下的keystore,并对Tomcat进行配置即可。随后,打开conf/server.xml文件,并在<service>下添加以下Connector元素。

<Connector port="443"
    minSpareThreads="5"
    maxSpareThreads="75"
    enableLookups="true"
    disableUploadTimeout="true"
    acceptCount="100"
    maxThreads="200"
    
    cheme="https"
    secure="true"
    SSLEnabled="true"
    keystoreFile="/path/to/keystore"
    keyAlias="example.com"
    keystorePass="01secret02%%%"
    clientAuth="false"
    sslPortocol="TLS"
/>

以上从cheme开始到最后的代码与SSL有关。

3、这两天在JAVA WEB项目,登录要使用https,于是Tomcat配置SSL并部署至服务器,遇到下面的问题,求解答!

首先你的域名能否解析到你外网的固定IP
PING 你的域名解析的IP看是不是外网的固定专IP

然后你把外网的什么端口映射属到了你服务器的内网IP+端口上
检查一下路由器映射。
如果你是直接协议加域名这样外网访问的话(http://+域名+项目名)或者(https://+域名+项目名)
你得把默认端口
80端口映射到服务器的内网IP+端口80上
443端口映射到服务器的内网IP+端口8443上

4、这两天在JAVA WEB项目,登录要使用https,于是Tomcat配置SSL并部署至服务器,遇到下面的问题,求解答!

首先你的域名能否解析到你外网的固定IPPING 你的域名解析的IP看是不是外网的固定版IP然后你把外网的什么端口权映射到了你服务器的内网IP+端口上检查一下路由器映射。如果你是直接协议加域名这样外网访问的话(+域名+项目名)你得把默认端口80端口映射到服务器的内网IP+端口80上443端口映射到服务器的内网IP+端口8443上这两天在JAVA WEB项目,登录要使用https,于是Tomcat配置SSL并部署至服务器,遇到下面的问题,求解答!

5、关于java的SSL https协议

1.SSL单向和双向的意思就是字面的意思:单向就是用户到服务器之间只是单方面内的ssl,而双向就是容双方都可以使用;这个具体概念你可以去网上多了解了解,一般登录用单向的就可以了,除非是PKI方面的会用到双向认证;
2.实现方面,不算简单也不算复杂,现在给你说肯定说不清楚,但是这个方面的资料还是很多的,比如:你只需要在tomcat中配置开启ssl应用,即端口8443(但是不止开端口这么简单,调通就可以了),实现的时候某几个jsp页面地址是8443下的就可以了.当然需要Filter之类的来控制.
....... 好辛苦

6、怎样用java创建一个socket ssl客户端

SSL(安全套接层)是Netscape公司在1994年开发的,最初用于WEB浏览器,为浏览器与服务器间回的数据传递提供答安全保障,提供了加密、来源认证和数据完整性的功能。现在SSL3.0得到了普遍的使用,它的改进版TLS(传输层安全)已经成为互联网标准。SSL本身和TCP套接字连接是很相似的,在协议栈中,SSL可以被简单的看作是安全的TCP连接,但是某些TCP连接的特性它是不支持的,比如带外数据(out-of-bound)。
在构建基于Socket的C/S程序时,通过添加对SSL的支持来保障数据安全和完整是不错的方法。完善的Java为我们提供了简单的实现方法:JSSE(Java安全套接字扩展)。JSSE是一个纯Java实现的SSL和TLS协议框架,抽象了SSL和TLS复杂的算法,使安全问题变得简单。JSSE已经成为J2SE1.4版本中的标准组件,支持SSL 3.0和TLS 1.0。我们将通过一个具体的例子演示JSSE的一些基本应用。例子中的服务器端将打开一个SSL Socket,只有持有指定证书的客户端可以与它连接,所有的数据传递都是加密的。

7、公司买了一个ssl的证书,要用java服务器做一个ssl的认证。

你可以去evtrust的网站上——技术支持——SSL部署指南,然后你什么服务器就选择什么服务器的指南就可以了

8、如何为Java服务器提供多个SSL证书

不支持安装多个独立SSL证书,可以淘宝Gworg获取多域名证书。

9、Java 代码操作带SSL的FTP服务器

参考

client = new FTPSClient(implictSSL);

KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
kmf.init(KeyStore.getInstance("BKS"), "wshr.ut".toCharArray());

client.setTrustManager(new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
});

client.setKeyManager(kmf.getKeyManagers()[0]);
client.setNeedClientAuth(false);
client.setUseClientMode(false);

10、java server怎样和c++ client实现SSL通信

java keytool生成的证书是CRT等格式的,这种格式是2进制编码的,而C++用的证书格式是pem,pem是ascii编码的。
有个中转服务器用的oracle service bus 。只支持JKS格式 也就是java的KEYTOOL生成的key库。

比如Server端只接收一个结构Employee,定义如下:
struct UserInfo {
char UserName[20];
int UserId;
};
struct Employee {
UserInfo user;
float salary;
};
当然也可以定义为
struct Employee {
char name[20];
int id;
float salary;
};
java client 测试源码(为说明问题,假设struct字节对齐,sizeof(Employee)=28)

import java.net.*;
/**
* 与C语言通信(java做Client,c/c++做Server,传送一个结构)
* @author kingfish
* @version 1.0
*/
class Employee {
private byte[] buf = new byte[28]; //为说明问题,定死大小,事件中可以灵活处理
/**
* 将int转为低字节在前,高字节在后的byte数组
*/
private static byte[] toLH(int n) {
byte[] b = new byte[4];
b[0] = (byte) (n & 0xff);
b[1] = (byte) (n >> 8 & 0xff);
b[2] = (byte) (n >> 16 & 0xff);
b[3] = (byte) (n >> 24 & 0xff);
return b;
}
/**
* 将float转为低字节在前,高字节在后的byte数组
*/
private static byte[] toLH(float f) {
return toLH(Float.floatToRawIntBits(f));
}
/**
* 构造并转换
*/
public Employee(String name, int id, float salary) {
byte[] temp = name.getBytes();
System.arraycopy(temp, 0, buf, 0, temp.length);
temp = toLH(id);
System.arraycopy(temp, 0, buf, 20, temp.length);
temp = toLH(salary);
System.arraycopy(temp, 0, buf, 24, temp.length);
}
/**
* 返回要发送的数组
*/
public byte[] getBuf() {
return buf;
}
/**
* 发送测试
*/
public static void main(String[] args) {
try {
Socket sock = new Socket("127.0.0.1", 8888);
sock.getOutputStream().write(new Employee("kingfish", 123456789, 8888.99f).
getBuf());
sock.close();
}
catch (Exception e) {
e.printStackTrace();
}
} //end

---------------------------------------------------------------------------
当然,也可以利用writeInt,writeFloat方法发送,但字节顺序需要改为低在前。
这个问题稍后在讨论。

如有任何问题,请指正!

对于java端的接收有些问题,
我列出我们以前的接收函数:
public String Receive() throws IOException
{
byte[] buffer = new byte[8];//byte[1024]
int count = 0;
ips=_Socket.getInputStream();
ios=new DataInputStream(ips);
if (listMsg.size() == 0)
{
count=ios.read(buffer, 0, buffer.length);//获取字符数组和其长度
String str=new String(buffer,0,count,"gb2312");//转换成字符串
String[] strs=str.split("//|");
for (int i = 0; i < strs.length; i++)
{
if (strs[i].toString() != "")
{
listMsg.add(strs[i]);
}
}
str = listMsg.get(0).toString().trim();
listMsg.remove(0);
buffer = null;
return str;
}
else
{
String str = listMsg.get(0).toString().trim();
listMsg.remove(0);
buffer = null;
return str;
}
}

接收流函数:

/*
* 接收流,注意流的大小,避免溢出
* linc
* 2010-9-13
*/
public byte[] ReceiveStream() throws Exception
{
String str = Receive();
int num = Integer.parseInt(str);//获得流的长度
Send("0|",false);
ByteArrayOutputStream _bytestream=new ByteArrayOutputStream();
InputStream _InputStream=_Socket.getInputStream();
int Length=0;
byte[] buffer = new byte[1024];
while (Length < num)
{
int temp_length = buffer.length;//1024
if ((num - Length) < temp_length)
{
temp_length = num - Length;
}
_InputStream.read(buffer, 0, temp_length);
_bytestream.write(buffer, 0, temp_length);

Length += temp_length;
Send(String.valueOf(Length),false);
}
return _bytestream.toByteArray();

}

与javassl服务器相关的知识