Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决使用java访问vcenter时出现的证书错误?_Java_Ssl_Vmware - Fatal编程技术网

如何解决使用java访问vcenter时出现的证书错误?

如何解决使用java访问vcenter时出现的证书错误?,java,ssl,vmware,Java,Ssl,Vmware,我正在使用vmware API。通过使用此API,我能够获得ESX设备的信息。现在我想使用此API获取有关vcenter的信息,但获取异常Java.rmi.remoteException:VI SDK Invoke exception:javax.net.ssl.SSLHandShakeException:Java.security 下面是一个代码: public void realesx(){ System.out.println("Running ESX Realtime for host

我正在使用vmware API。通过使用此API,我能够获得ESX设备的信息。现在我想使用此API获取有关vcenter的信息,但获取异常Java.rmi.remoteException:VI SDK Invoke exception:javax.net.ssl.SSLHandShakeException:Java.security

下面是一个代码:

public void realesx(){
System.out.println("Running ESX Realtime for host ..."+host);
JSONObject esxcmdout = new JSONObject();
String url = "https://" + host + "/sdk/vimService";
try {
ServiceInstance si = new ServiceInstance(new URL(url), user, pass,true);
System.out.println("host :"+host+"---"+si.getAboutInfo().getFullName());

System.out.println(" Version is .. " +si.getAboutInfo().version);
System.out.println(" os type is .. " +si.getAboutInfo().osType);
System.out.println("Vendor is .. " + si.getAboutInfo().vendor);
System.out.println("name is" + si.getAboutInfo().name);
try{
esxcmdout.put("vmWayerVersion", si.getAboutInfo().version);
esxcmdout.put("vmWayerOSType", si.getAboutInfo().osType);
esxcmdout.put("vmWayerVendor", si.getAboutInfo().vendor);
esxcmdout.put("vmWayerName", si.getpublic void realesx(){
System.out.println("Running ESX Realtime for host ..."+host);
JSONObject esxcmdout = new JSONObject();
String url = "https://" + host + "/sdk/vimService";
try {
ServiceInstance si = new ServiceInstance(new URL(url), user, pass,true);
System.out.println("host :"+host+"---"+si.getAboutInfo().getFullName());

System.out.println(" Version is .. " +si.getAboutInfo().version);
System.out.println(" os type is .. " +si.getAboutInfo().osType);
System.out.println("Vendor is .. " + si.getAboutInfo().vendor);
System.out.println("name is" + si.getAboutInfo().name);
try{
esxcmdout.put("vmWayerVersion", si.getAboutInfo().version);
esxcmdout.put("vmWayerOSType", si.getAboutInfo().osType);
esxcmdout.put("vmWayerVendor", si.getAboutInfo().vendor);
esxcmdout.put("vmWayerName", si.getAboutInfo().name);
}
catch (Exception e){
e.printStackTrace();
}

ManagedEntity[] managedEntities = new InventoryNavigator(
si.getRootFolder()).searchManagedEntities("VirtualMachine");
ManagedEntity[] hostmanagedEntities = new InventoryNavigator(
        si.getRootFolder()).searchManagedEntities("HostSystem");

for (ManagedEntity hostmanagedEntity : hostmanagedEntities) {
HostSystem hostsys = (HostSystem) hostmanagedEntity;
String ESXhostname = hostsys.getName();
//System.out.println("main system version is .. " + hostsys.getConfig());
HostListSummary hls = hostsys.getSummary();
    HostHardwareSummary hosthwi = hls.getHardware();
    HostListSummaryQuickStats hqs = hls.getQuickStats();
    Datastore[] HDS = hostsys.getDatastores();
    StringBuilder DS = new StringBuilder();
    for (int i=0;i <HDS.length;i++){
      DatastoreSummary dsm =HDS[i].getSummary();

       DS.append(dsm.name+":"+dsm.capacity+":"+dsm.freeSpace+"-");
       }

int MEM=hqs.overallMemoryUsage;
int UPT=hqs.getUptime();
Integer CPU=hqs.getOverallCpuUsage();   

String esxkey = "ESXRealInfo";
String esxvalue = "ESXhostname-" + ESXhostname
    + ";CPU Usage-" + CPU + ";MEM Usage-"
    + MEM + ";UPTIME-" + UPT+"; Datastores -"+DS;
try {
esxcmdout.put(esxkey, esxvalue);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

for (int i = 0; i < managedEntities.length; i++) {
    VirtualMachine vm = (VirtualMachine) managedEntities[i];
    String vmName = vm.getName();

    String vmIP = vm.getGuest().getIpAddress();
    VirtualMachineConfigInfo config = vm.getConfig();
    VirtualHardware hw = config.getHardware();
    String vmVersion = config.version;
    System.out.println("######### vm version is  ###### ...  "+ vmVersion);
    int vmCPU = hw.getNumCPU();
    int vmMem = hw.getMemoryMB();
    String vmkey = "vm" + i;
        String vmvalues = "Name-" + vmName + ";IP-" + vmIP + ";vmCPU-"
            + vmCPU + ";vmMem-" + vmMem + ";vmVersion-" + vmVersion;
           System.out.println("string to write is... "+vmvalues);
    try {
        esxcmdout.put(vmkey, vmvalues);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    }
    si.getServerConnection().logout();
    }

    catch (InvalidProperty e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RuntimeFault e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        runMT.httpput(runtype, host, vmwtype, esxcmdout);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

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

    ManagedEntity[] managedEntities = new InventoryNavigator(
                si.getRootFolder()).searchManagedEntities("VirtualMachine");
    ManagedEntity[] hostmanagedEntities = new InventoryNavigator(
                si.getRootFolder()).searchManagedEntities("HostSystem");

    for (ManagedEntity hostmanagedEntity : hostmanagedEntities) {
    HostSystem hostsys = (HostSystem) hostmanagedEntity;

    String ESXhostname = hostsys.getName();
    //System.out.println("main system version is .. " + hostsys.getConfig());

    HostListSummary hls = hostsys.getSummary();
            HostHardwareSummary hosthwi = hls.getHardware();
            HostListSummaryQuickStats hqs = hls.getQuickStats();
            Datastore[] HDS = hostsys.getDatastores();
            StringBuilder DS = new StringBuilder();
            for (int i=0;i <HDS.length;i++){
                DatastoreSummary dsm =HDS[i].getSummary();

                DS.append(dsm.name+":"+dsm.capacity+":"+dsm.freeSpace+"-");
            }

    int MEM=hqs.overallMemoryUsage;
    int UPT=hqs.getUptime();
    Integer CPU=hqs.getOverallCpuUsage();   

    String esxkey = "ESXRealInfo";
    String esxvalue = "ESXhostname-" + ESXhostname
            + ";CPU Usage-" + CPU + ";MEM Usage-"
            + MEM + ";UPTIME-" + UPT+"; Datastores -"+DS;
    try {
        esxcmdout.put(esxkey, esxvalue);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    for (int i = 0; i < managedEntities.length; i++) {
    VirtualMachine vm = (VirtualMachine) managedEntities[i];
    String vmName = vm.getName();
    String vmIP = vm.getGuest().getIpAddress();
    VirtualMachineConfigInfo config = vm.getConfig();
    VirtualHardware hw = config.getHardware();
    String vmVersion = config.version;
    System.out.println("######### vm version is  ###### ...  "+ vmVersion);
    int vmCPU = hw.getNumCPU();
    int vmMem = hw.getMemoryMB();
    //sasSystem.out.println(vmName + vmIP + vmCPU + vmMem);
    String vmkey = "vm" + i;
    String vmvalues = "Name-" + vmName + ";IP-" + vmIP + ";vmCPU-"
            + vmCPU + ";vmMem-" + vmMem + ";vmVersion-" + vmVersion;
            System.out.println("string to write is... "+vmvalues);
    try {
        esxcmdout.put(vmkey, vmvalues);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
    si.getServerConnection().logout();
    }

    catch (InvalidProperty e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RuntimeFault e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        runMT.httpput(runtype, host, vmwtype, esxcmdout);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
此代码适用于收集ESX设备的信息。 如何解决vcenter的证书错误?
是否有其他方法可以执行此操作?

您必须导入证书,因此请浏览此页面了解导入证书

编辑:

试试下面给出的代码,看看这个


尝试将ServiceInstance上的最后一个参数更改为false,如下所示:ServiceInstance si=new ServiceInstancenew URLurl,user,pass,false

如何以编程方式进行?我可以使用java程序导入证书吗?
KeyStore keyStore = KeyStore.getInstance("JKS");
String fileName = "D:\\certs_path\\cacerts"; // cerrtification file path
System.setProperty("javax.net.ssl.trustStore", fileName);