導航:首頁 > 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伺服器相關的知識