私は1つのサーバーに接続してそのサーバーと対話し、単純なタスクを実行する1つのJavaプログラムを持っています。
私のJavaプログラムは、vmware esxiサーバーとやり取りすることです。次のコードで。
ServiceInstance si = new ServiceInstance(新しい URL("https://10.100.13.36/sdk"), "root", "teamw0rk", true)
true パラメータは、証明書を無視することを true に指定します。
ライブラリとの vmware の相互作用であっても、純粋に証明書の問題です。証明書を無視するために false を入力すると、ライブラリファイルから一般的な証明書の期待値を取得しました。
プログラムは次のとおりです。
package com.vmware.vim25.mo.samples;
import java.net.URL;
import com.vmware.vim25.*;
import com.vmware.vim25.mo.*;
public class HelloVM
{
public static void main(String[] args) throws Exception
{
long start = System.currentTimeMillis();
ServiceInstance si = new ServiceInstance(new URL("https://10.100.13.36/sdk"), "root", "teamw0rk", false);
long end = System.currentTimeMillis();
System.out.println("time taken:" + (end-start));
Folder rootFolder = si.getRootFolder();
String name = rootFolder.getName();
System.out.println("root:" + name);
ManagedEntity[] mes = new InventoryNavigator(rootFolder).searchManagedEntities("VirtualMachine");
if(mes==null || mes.length ==0)
{
return;
}
VirtualMachine vm = (VirtualMachine) mes[0];
VirtualMachineConfigInfo vminfo = vm.getConfig();
VirtualMachineCapability vmc = vm.getCapability();
vm.getResourcePool();
System.out.println("Hello " + vm.getName());
System.out.println("GuestOS: " + vminfo.getGuestFullName());
System.out.println("Multiple snapshot supported: " + vmc.isMultipleSnapshotsSupported());
si.getServerConnection().logout();
}
}
エラーは、ssl 証明書の予期に関連しています。
Exception in thread "main" java.rmi.RemoteException: VI SDK invoke exception:javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 10.100.13.36 found
at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:182)
at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:124)
at com.vmware.vim25.ws.VimStub.retrieveServiceContent(VimStub.java:1521)
at com.vmware.vim25.mo.ServiceInstance.<init>(ServiceInstance.java:85)
at com.vmware.vim25.mo.ServiceInstance.<init>(ServiceInstance.java:69)
at com.vmware.vim25.mo.samples.HelloVM.main(HelloVM.java:16)
私が確認したように、プログラム エラーは vmware とは関係なく、証明書に関連しています。
私が行った最初のステップは、次のコマンドを使用してjksファイルを作成することです
c:/java/jre/bin>keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
bin フォルダーに keystore.jks を作成します。
Java プログラムでこの keystore.jks を参照する方法を理解する必要があります (これについての知識が不足しています...申し訳ありません)。
証明書の生成方法と、証明書のインポートとエクスポートの意味。
私の場合、インポートまたはエクスポートする必要がありますか..
最初に私は一人の人に質問を投稿しました..
彼は「高レベルでは、キーストアにサーバー証明書が必要であり、キーストアを JVM パラメータに含める必要があります」と答えました。
私の疑問を明確にし、これに光を当ててください..
ありがとうございました。