解决PKIX问题:unable to find valid certification path to requested target

Jetson nano/nx使用麒麟arm版向日葵实现远程控制 Jetson nano/nx使用麒麟arm版向日葵实现远程控制1、安装向日葵软件2、运行Sunlogin Client3、向日葵闪退问题4、重启系统5、重启后黑屏问题 特别提醒: 本博客的第3步切换桌面管理环境到lightdm,存在重启后开机黑屏的风险,我在自己的nano/nx上都没有问题,但帮一个同学的nx配置时,切换到lightdm,重启开机却出现了黑屏,所以执行第3步的话要有心理准备,黑屏解决方法见第5步,特此提醒。 阅读详情

完整版见https://jadyer.github.io/2012/07/29/ssl-pkix/


话说前几天在测试服务器上遇到了这么个异常

  1. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:   
  2. sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  
就是说找不着安全证书啥的等等烂码七糟的一大堆

接着就拜Google大神,发现一篇文章能被N个人转来转去的,关键文章还不怎么靠谱



后来找到了一个办法,幸运的是在测试环境一弄,这个问题看上去就被解决了



我们要做的就是将所要访问的URL的安全认证证书导入到客户端

下面是获取安全证书的一种方法

  1. /* 
  2.  * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved. 
  3.  * 
  4.  * Redistribution and use in source and binary forms, with or without 
  5.  * modification, are permitted provided that the following conditions 
  6.  * are met: 
  7.  * 
  8.  *   - Redistributions of source code must retain the above copyright 
  9.  *     notice, this list of conditions and the following disclaimer. 
  10.  * 
  11.  *   - Redistributions in binary form must reproduce the above copyright 
  12.  *     notice, this list of conditions and the following disclaimer in the 
  13.  *     documentation and/or other materials provided with the distribution. 
  14.  * 
  15.  *   - Neither the name of Sun Microsystems nor the names of its 
  16.  *     contributors may be used to endorse or promote products derived 
  17.  *     from this software without specific prior written permission. 
  18.  * 
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
  20.  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
  21.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  22.  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
  23.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
  24.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
  25.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
  26.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
  27.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
  28.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
  29.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  30.  */  
  31.   
  32. import java.io.BufferedReader;  
  33. import java.io.File;  
  34. import java.io.FileInputStream;  
  35. import java.io.FileOutputStream;  
  36. import java.io.InputStream;  
  37. import java.io.InputStreamReader;  
  38. import java.io.OutputStream;  
  39. import java.security.KeyStore;  
  40. import java.security.MessageDigest;  
  41. import java.security.cert.CertificateException;  
  42. import java.security.cert.X509Certificate;  
  43.   
  44. import javax.net.ssl.SSLContext;  
  45. import javax.net.ssl.SSLException;  
  46. import javax.net.ssl.SSLSocket;  
  47. import javax.net.ssl.SSLSocketFactory;  
  48. import javax.net.ssl.TrustManager;  
  49. import javax.net.ssl.TrustManagerFactory;  
  50. import javax.net.ssl.X509TrustManager;  
  51.   
  52. public class InstallCert {  
  53.     public static void main(String[] args) throws Exception {  
  54.         String host;  
  55.         int port;  
  56.         char[] passphrase;  
  57.         if ((args.length == 1) || (args.length == 2)) {  
  58.             String[] c = args[0].split(":");  
  59.             host = c[0];  
  60.             port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);  
  61.             String p = (args.length == 1) ? "changeit" : args[1];  
  62.             passphrase = p.toCharArray();  
  63.         } else {  
  64.             System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");  
  65.             return;  
  66.         }  
  67.   
  68.         File file = new File("jssecacerts");  
  69.         if (file.isFile() == false) {  
  70.             char SEP = File.separatorChar;  
  71.             File dir = new File(System.getProperty("java.home") + SEP + "lib" + SEP + "security");  
  72.             file = new File(dir, "jssecacerts");  
  73.             if (file.isFile() == false) {  
  74.                 file = new File(dir, "cacerts");  
  75.             }  
  76.         }  
  77.           
  78.         System.out.println("Loading KeyStore " + file + "...");  
  79.         InputStream in = new FileInputStream(file);  
  80.         KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());  
  81.         ks.load(in, passphrase);  
  82.         in.close();  
  83.   
  84.         SSLContext context = SSLContext.getInstance("TLS");  
  85.         TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());  
  86.         tmf.init(ks);  
  87.         X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0];  
  88.         SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);  
  89.         context.init(null, new TrustManager[]{tm}, null);  
  90.         SSLSocketFactory factory = context.getSocketFactory();  
  91.   
  92.         System.out.println("Opening connection to " + host + ":" + port + "...");  
  93.         SSLSocket socket = (SSLSocket) factory.createSocket(host, port);  
  94.         socket.setSoTimeout(10000);  
  95.         try {  
  96.             System.out.println("Starting SSL handshake...");  
  97.             socket.startHandshake();  
  98.             socket.close();  
  99.             System.out.println();  
  100.             System.out.println("No errors, certificate is already trusted");  
  101.         } catch (SSLException e) {  
  102.             System.out.println();  
  103.             e.printStackTrace(System.out);  
  104.         }  
  105.   
  106.         X509Certificate[] chain = tm.chain;  
  107.         if (chain == null) {  
  108.             System.out.println("Could not obtain server certificate chain");  
  109.             return;  
  110.         }  
  111.   
  112.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  
  113.   
  114.         System.out.println();  
  115.         System.out.println("Server sent " + chain.length + " certificate(s):");  
  116.         System.out.println();  
  117.         MessageDigest sha1 = MessageDigest.getInstance("SHA1");  
  118.         MessageDigest md5 = MessageDigest.getInstance("MD5");  
  119.         for (int i = 0; i < chain.length; i++) {  
  120.             X509Certificate cert = chain[i];  
  121.             System.out.println(" " + (i + 1) + " Subject " + cert.getSubjectDN());  
  122.             System.out.println("   Issuer  " + cert.getIssuerDN());  
  123.             sha1.update(cert.getEncoded());  
  124.             System.out.println("   sha1    " + toHexString(sha1.digest()));  
  125.             md5.update(cert.getEncoded());  
  126.             System.out.println("   md5     " + toHexString(md5.digest()));  
  127.             System.out.println();  
  128.         }  
  129.   
  130.         System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");  
  131.         String line = reader.readLine().trim();  
  132.         int k;  
  133.         try {  
  134.             k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;  
  135.         } catch (NumberFormatException e) {  
  136.             System.out.println("KeyStore not changed");  
  137.             return;  
  138.         }  
  139.   
  140.         X509Certificate cert = chain[k];  
  141.         String alias = host + "-" + (k + 1);  
  142.         ks.setCertificateEntry(alias, cert);  
  143.   
  144.         OutputStream out = new FileOutputStream("jssecacerts");  
  145.         ks.store(out, passphrase);  
  146.         out.close();  
  147.   
  148.         System.out.println();  
  149.         System.out.println(cert);  
  150.         System.out.println();  
  151.         System.out.println("Added certificate to keystore 'jssecacerts' using alias '" + alias + "'");  
  152.     }  
  153.   
  154.       
  155.     private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();  
  156.   
  157.       
  158.     private static String toHexString(byte[] bytes) {  
  159.         StringBuilder sb = new StringBuilder(bytes.length * 3);  
  160.         for (int b : bytes) {  
  161.             b &= 0xff;  
  162.             sb.append(HEXDIGITS[b >> 4]);  
  163.             sb.append(HEXDIGITS[b & 15]);  
  164.             sb.append(' ');  
  165.         }  
  166.         return sb.toString();  
  167.     }  
  168.   
  169.       
  170.     private static class SavingTrustManager implements X509TrustManager {  
  171.         private final X509TrustManager tm;  
  172.         private X509Certificate[] chain;  
  173.   
  174.         SavingTrustManager(X509TrustManager tm) {  
  175.             this.tm = tm;  
  176.         }  
  177.   
  178.         public X509Certificate[] getAcceptedIssuers() {  
  179.             throw new UnsupportedOperationException();  
  180.         }  
  181.   
  182.         public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {  
  183.             throw new UnsupportedOperationException();  
  184.         }  
  185.   
  186.         public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {  
  187.             this.chain = chain;  
  188.             tm.checkServerTrusted(chain, authType);  
  189.         }  
  190.     }  
  191. }  
编译InstallCert.java得到两个class文件,并执行InstallCert类


执行方式:Java InstallCert hostname     eg:Java InstallCert www.cebbank.com

接下来会看到下面的打印信息

  1. java InstallCert www.cebbank.com  
  2. Loading KeyStore /usr/java/jdk1.6.0_31/jre/lib/security/cacerts...  
  3. Opening connection to www.cebbank.com:443...  
  4. Starting SSL handshake...  
  5.   
  6. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:   
  7. sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  
  8.     at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)  
  9.     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1731)  
  10.     at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:241)  
  11.     at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235)  
  12.     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206)  
  13.     at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)  
  14.     at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)  
  15.     at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)  
  16.     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:925)  
  17.     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1170)  
  18.     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1197)  
  19.     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1181)  
  20.     at InstallCert.main(InstallCert.java:102)  
  21. Caused by: sun.security.validator.ValidatorException: PKIX path building failed:   
  22. sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  
  23.     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:323)  
  24.     at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:217)  
  25.     at sun.security.validator.Validator.validate(Validator.java:218)  
  26.     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)  
  27.     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)  
  28.     at InstallCert$SavingTrustManager.checkServerTrusted(InstallCert.java:198)  
  29.     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1198)  
  30.     ... 8 more  
  31. Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  
  32.     at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)  
  33.     at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)  
  34.     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:318)  
  35.     ... 14 more  
  36.   
  37. Server sent 1 certificate(s):  
  38.   
  39.  1 Subject CN=www.cebbank.com, OU=Terms of use at www.verisign.com/rpa (c)05, OU=CEB, O="China Everbright Bank Co., Ltd", L=Beijing  
  40.    Issuer  CN=VeriSign Class 3 Extended Validation SSL CA, OU=Terms of use at https://www.verisign.com/rpa (c)06, OU=VeriSign Trust Network  
  41.    sha1    5b d2 85 6e b3 a4 2b 07 a2 13 47 b3 be 3e 1f c9 d3 ce 46 57   
  42.    md5     05 d8 ae ee f1 d9 51 63 6d 2f 11 e0 ac d0 e7 d7   
  43.   
  44. Enter certificate to add to trusted keystore or 'q' to quit: [1]  
然后输入1并回车,会看到类似下面的打印信息
  1. [  
  2. [  
  3.   Version: V3  
  4.   Subject: CN=www.cebbank.com, OU=Terms of use at www.verisign.com/rpa (c)05, OU=CEB, O="China Everbright Bank Co., Ltd", L=Beijing  
  5.   Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5  
  6.   
  7.   Key:  Sun RSA public key, 2048 bits  
  8.   modulus: 30831246384548809540705228292841393062583732250993909916355780413722161557074568469738254573472093341710481517139910877  
  9.   public exponent: 65537  
  10.   Validity: [From: Mon Jul 02 08:00:00 CST 2012,  
  11.                To: Thu Jul 03 07:59:59 CST 2014]  
  12.   Issuer: CN=VeriSign Class 3 Extended Validation SSL CA, OU=Terms of use at https://www.verisign.com/rpa (c)06, OU=VeriSign Trust Network  
  13.   SerialNumber: [    5715ab25 6be8fa42 2fa28dd4 601bc732]  
  14.   
  15. Certificate Extensions: 9  
  16. [1]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false  
  17. AuthorityInfoAccess [  
  18.   [  
  19.    accessMethod: 1.3.6.1.5.5.7.48.1  
  20.    accessLocation: URIName: http://ocsp.verisign.com,   
  21.    accessMethod: 1.3.6.1.5.5.7.48.2  
  22.    accessLocation: URIName: http://EVSecure-aia.verisign.com/EVSecure2006.cer]  
  23. ]  
  24.   
  25. [2]: ObjectId: 2.5.29.17 Criticality=false  
  26. SubjectAlternativeName [  
  27.   DNSName: www.cebbank.com  
  28. ]  
  29.   
  30. [3]: ObjectId: 2.5.29.35 Criticality=false  
  31. AuthorityKeyIdentifier [  
  32. KeyIdentifier [  
  33. 0000: FC 8A 50 BA 9E B9 25 5A   7B 55 85 4F 95 00 63 8F  ..P...%Z.U.O..c.  
  34. 0010: E9 58 6B 43                                        .XkC  
  35. ]  
  36.   
  37. ]  
  38.   
  39. [4]: ObjectId: 2.5.29.32 Criticality=false  
  40. CertificatePolicies [  
  41.   [CertificatePolicyId: [2.16.840.1.113733.1.7.23.6]  
  42. [PolicyQualifierInfo: [  
  43.   qualifierID: 1.3.6.1.5.5.7.2.1  
  44.   qualifier: 0000: 16 1C 68 74 74 70 73 3A   2F 2F 77 77 77 2E 76 65  ..https://www.ve  
  45. 0010: 72 69 73 69 67 6E 2E 63   6F 6D 2F 63 70 73        risign.com/cps  
  46.   
  47. ]]  ]  
  48. ]  
  49.   
  50. [5]: ObjectId: 2.5.29.19 Criticality=false  
  51. BasicConstraints:[  
  52.   CA:false  
  53.   PathLen: undefined  
  54. ]  
  55.   
  56. [6]: ObjectId: 1.3.6.1.5.5.7.1.12 Criticality=false  
  57. Extension unknown: DER encoded OCTET string =  
  58. 0000: 04 62 30 60 A1 5E A0 5C   30 5A 30 58 30 56 16 09  .b0`.^.\0Z0X0V..  
  59. 0010: 69 6D 61 67 65 2F 67 69   66 30 21 30 1F 30 07 06  image/gif0!0.0..  
  60. 0020: 05 2B 0E 03 02 1A 04 14   4B 6B B9 28 96 06 0C BB  .+......Kk.(....  
  61. 0030: D0 52 38 9B 29 AC 4B 07   8B 21 05 18 30 26 16 24  .R8.).K..!..0&.$  
  62. 0040: 68 74 74 70 3A 2F 2F 6C   6F 67 6F 2E 76 65 72 69  http://logo.veri  
  63. 0050: 73 69 67 6E 2E 63 6F 6D   2F 76 73 6C 6F 67 6F 31  sign.com/vslogo1  
  64. 0060: 2E 67 69 66                                        .gif  
  65.   
  66.   
  67. [7]: ObjectId: 2.5.29.37 Criticality=false  
  68. ExtendedKeyUsages [  
  69.   serverAuth  
  70.   clientAuth  
  71. ]  
  72.   
  73. [8]: ObjectId: 2.5.29.31 Criticality=false  
  74. CRLDistributionPoints [  
  75.   [DistributionPoint:  
  76.      [URIName: http://EVSecure-crl.verisign.com/EVSecure2006.crl]  
  77. ]]  
  78.   
  79. [9]: ObjectId: 2.5.29.15 Criticality=false  
  80. KeyUsage [  
  81.   DigitalSignature  
  82.   Key_Encipherment  
  83. ]  
  84.   
  85. ]  
  86.   Algorithm: [SHA1withRSA]  
  87.   Signature:  
  88. 0000: 42 0A 89 BF 48 08 1E F4   98 F2 E5 DB 0D 83 EF 37  B...H..........7  
  89. 0010: EC 27 6F 4D 81 69 C6 4A   4C 17 EC 57 F5 48 2A 14  .'oM.i.JL..W.H*.  
  90. 0020: 3C 54 B2 C5 49 39 42 BA   EC 83 78 02 F9 96 6C 63  <T..I9B...x...lc  
  91. 0030: 80 BC 60 61 BB 20 D1 AD   C3 D3 76 47 6F 0C 7B AC  ..`a. ....vGo...  
  92. 0040: 76 B2 C7 2D B1 0A 7A 00   CA 40 38 86 FF 9F 12 F5  v..-..z..@8.....  
  93. 0050: BE 5A E7 42 97 2F DF DE   0C 19 C5 F6 92 58 17 7A  .Z.B./.......X.z  
  94. 0060: 9A 1D 2C 2C DA 8B 83 83   2D BE 07 58 56 36 92 E7  ..,,....-..XV6..  
  95. 0070: B1 F8 A0 B5 00 F4 C3 30   D1 34 37 3D 94 75 28 04  .......0.47=.u(.  
  96. 0080: A2 D8 C3 FE B1 E1 C2 2E   51 A8 6F D5 09 6D 49 DB  ........Q.o..mI.  
  97. 0090: 2E 1D 4B F7 A8 06 30 B4   97 E7 C2 33 26 FD 6A DF  ..K...0....3&.j.  
  98. 00A0: D6 B0 10 A1 F2 73 DD 5A   60 DE 51 5E EA 80 46 86  .....s.Z`.Q^..F.  
  99. 00B0: 25 0B 53 FC C2 57 80 35   09 2D 31 55 28 35 EE 0F  %.S..W.5.-1U(5..  
  100. 00C0: 62 50 4B 12 75 0B 02 9F   2F 0B D2 8A 0D 23 E3 C1  bPK.u.../....#..  
  101. 00D0: 48 28 56 33 E1 DE 31 DD   72 78 15 96 EE 2B A5 1D  H(V3..1.rx...+..  
  102. 00E0: 37 85 1B E5 88 53 80 88   02 6D 90 F3 E6 4A 74 AC  7....S...m...Jt.  
  103. 00F0: D2 CA 0E 04 BC 46 A0 57   34 FA CF 9D E5 D7 0E 4B  .....F.W4......K  
  104.   
  105. ]  
  106.   
  107. Added certificate to keystore 'jssecacerts' using alias 'www.cebbank.com-1'  
同时我们会在当面目录下发现已经生成了一个名为jssecacerts的证书

再将名为jssecacerts的证书拷贝\\%JAVA_HONME%\\jre\\lib\\security\\目录中

最后重启下应用的服务,证书就会生效了。。





补充:有人说生成证书后不用拷贝,直接代码里加句话就行,结果试了一下发现不管用

  1. System.setProperty("javax.net.ssl.trustStore", "jssecacerts证书路径"); 
AUTOSAR Dem模块实战配置:从理论到代码生成的完整指南 本文提供了一份AUTOSAR Dem模块从理论到代码生成的完整实战配置指南。文章详细拆解了配置流程,涵盖Dem模块的核心角色、通用骨架搭建、事件与DTC映射、消抖机制配置,以及与BswM、EcuM、DCM等模块的联调方法,旨在帮助汽车电子工程师快速掌握诊断事件管理的关键配置步骤,生成可运行的代码。 阅读详情

相关推荐

Android 12高通thermal-engine调试实战:如何快速开启debug日志并解决CPU降频问题

本文详细介绍了Android 12高通thermal-engine的调试实战,包括如何快速开启debug日志、解读关键日志信息以及解决CPU降频问题。通过优化配置文件和调整温控策略,开发者可以有效提升设备性能,避免因温度管理导致的性能瓶颈。

i3j4k5的博客 304

https不需要证书访问报错PKIXCertPathBuilderImpl could not build a valid CertPath.;

public static String post(String url,String strSendData, String charset) throws NoSuchAlgorithmException, KeyManagementException, IOException { System.out.println("请求参数为:"+strSendDat

guanghuilove的专栏 3456

国内外主流嵌入式GUI汇总

随着MCU资源增多,处理能力也强了,同时市场需求也增多了GUI功能也越来越丰富了,很多的嵌入式图形库都可以做出绚丽的界面。

m0_69914734的博客 3289

java访问https服务时 keystore的管理

异常:PKIXCertPathBuilderImpl could not build a valid CertPath 解决办法:

Austin.Zhou的专栏 1920

Neo4j桌面版导入CVS文件

我们的relation.csv是这样的。

m0_53573725的博客 816

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 849

java 微信等三方登录部署到WAS服务器上报错

[16-3-21 11:40:05:580 CST] 00000052 SystemErr     R javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuild

拼命微笑的专栏 1708

【SpringBoot笔记44】SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置)

在SpringBoot应用开发中,一般情况下,都是只会配置一个数据源信息,之后整个工程都是对当前数据源进行增删改查的操作。但是,在实际开发里面,也有可能会遇到多数据源的情况,例如:当前工程中除了需要访问自己应用的数据库,还需要直接连接第三方系统的数据库进行业务处理,这种情况下,就需要进行多数据源的配置。SpringBoot考虑到了这一点,所以它是支持多数据源的配置的,下面介绍一下如何配置多数据源。

✅ Java 开发工程师 1115

“客户机和服务器无法通过需要的安全性级别”解决办法

在was中启用了安全性之后,出现了节点不同步,如果启动nodeagent提示成功,前台状态仍然是关闭状态,有可能是后台报错; -------错误日志: [12-4-12 15:03:20:239 CST] 00000015 SystemOut     O [12-4-12 15:03:20:245 CST] 00000015 FfdcProvider  W com.ibm.ws.ffdc.im...

johnwy6的博客 1834

RK3568平台开发系列讲解(外设篇)CAN的使用

📢 本篇章带大家快速了解CAN的使用。

内核笔记 2351

FastAPI 高级特性:同异步路由函数、依赖注入与后台任务

在现代 Web 开发中,高效的性能和简洁的代码结构是至关重要的。FastAPI 作为一个现代、快速(高性能)的 Web 框架,凭借其对异步编程的原生支持和直观的依赖注入系统,迅速成为开发者的热门选择。在本文中,将深入探讨 `FastAPI` 中的几个核心概念:同异步函数的区别、`Depends` 依赖以及后台任务。

qq_43629857的博客 203

解决PKIX:unable to find valid certification path to requested target 的问题

最近有两个非常让我头痛的BUG。。。。。一块心病终于解决了。。。。。 错误一:PKIX:unable to find valid certification path to requested target 原因:自己之前利用maven创建项目一直都行,可是突然有一天,不行了,自己试了跟多的方法,都不起作用, 自己百度了不知道多少天,终于被我解决了(问老师的),最后问老师,老师给了我一个解决...

zhiguo98的博客 1378

Xilinx差分原语-IBUFGDS与OBUFGDS FPGA

它将差分信号转换为单端信号,并将其输入到FPGA的逻辑片上。它将单端信号转换为差分信号,并将其输出到FPGA的引脚。在FPGA设计中,差分信号是一种常见的信号传输方式,用于提高抗噪性和抑制共模噪声。Xilinx是一家知名的FPGA供应商,提供了许多差分原语,其中包括IBUFGDS和OBUFGDS。通过使用Xilinx的差分原语,如IBUFGDS和OBUFGDS,可以实现差分信号的输入和输出。这些差分原语提供了方便且可靠的接口,使得在FPGA设计中处理差分信号变得更加简单和高效。是差分输入信号的端口,

git_database727的博客 2095

Maven使用中PKIX path building failed: unable to find valid certification path to requested target问题解决

Maven使用中PKIX path building failed:unable to find valid certification path to requested target 解决办法

拾年一剑 的专栏 2673

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: maven war
下一篇: Sql中判断"库、表、列"是否存在
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值