JAVA - SSL - 客户端证书(JAVA - SSL - Client Certifcates)
我一直在使用JAVA开发一个WS客户端,我遇到了SSL身份验证问题。 WS是在WCF上创建的,我无权访问服务器,它们通过HTTPS工作并使用需要首先在客户端上安装的客户端证书。 服务器人员发给我一个PFX证书,我成功安装在操作系统上(我使用OS X)然后我可以通过浏览器访问WS(Safari或FF都是我尝试过的,以前无法访问WSs )。 我认为操作系统中的任何应用程序都会使用此证书,但是当我尝试使用我的JAVA应用程序时,它无效; 首先抛出以下错误:
“javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径”
我通过将证书导出到CER文件并使用keytool命令行工具将证书添加到JAVA使用的“cacerts”keyStore中来解决了这个问题。 但是在这个错误消失后,下面开始出现:“403,禁止”。 这显然是因为它没有为网站使用SSL客户端证书,但我找不到将其发送给它的方法。 任何帮助,将不胜感激。
以下是我用来发布到WS的代码:
URL url = new URL(p_url); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", contentType); OutputStream out = conn.getOutputStream(); // on this line it shows the error
I've been developing a WS client using JAVA and I'm having a problem with SSL authentication. The WS are created on WCF and I have no access to the server, they work through HTTPS and uses a client certificate that needs to be installed on the client first. The server guys sent me a PFX certificate which I successfully installed on the OS (I'm using OS X) and I could then access the WS via a browser (Safari or FF are both that I tried which previously couldn't access the WSs). I thought any app in the OS would use this certs but when I'm tried my JAVA app it didn't work; at first the following error was being thrown:
"javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"
I solved this by exporting the certificate to a CER file and using the keytool command line tool to add the certificate into the "cacerts" keyStore JAVA uses. But after this error went away the following started appearing: "403, forbidden". This is obviously because it's not using the SSL client cert for the site but I haven't been able to find a way to send it to it. Any help would be appreciated.
The following is the code I use to post to the WS:
URL url = new URL(p_url); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", contentType); OutputStream out = conn.getOutputStream(); // on this line it shows the error
原文:https://stackoverflow.com/questions/8948465
最满意答案
使用导航属性或保存之前,因此EF Core可以填充主键(仅在保存实体后才会发生)。
public class ProductExtension { public int ProductId { get; set; } public Product Product { get; set; } public string Notes { get; set; } }
现在你可以使用了
Product product = new Product(); product.Name = "Phone"; ProductExtension = productExtension = new ProductExtension(); // assign the whole model to the navigation property productExtension.Product = product; productExtension.Notes = "some notes"; // no need for this anymore // context.Products.Add(product); //Add and save context.ProductExtensions.Add(productExtension); context.SaveChangesAsync();
Use navigation property or save before, so EF Core can populate the primary keys (happens only after the entity is saved).
public class ProductExtension { public int ProductId { get; set; } public Product Product { get; set; } public string Notes { get; set; } }
Now you can use
Product product = new Product(); product.Name = "Phone"; ProductExtension = productExtension = new ProductExtension(); // assign the whole model to the navigation property productExtension.Product = product; productExtension.Notes = "some notes"; // no need for this anymore // context.Products.Add(product); //Add and save context.ProductExtensions.Add(productExtension); context.SaveChangesAsync();
相关问答
更多-
您需要删除外键约束。 您还可以保留外键约束并使用“软删除”,一旦用户设置为已删除,就可以将布尔字段设置为true。 事实仍然是:如果您使用外键约束,那么您将需要进行级联删除。 You need to remove the foreign key constraint. You could also keep the foreign key constraints and use "soft deletes" which could set a Boolean field to true once a use ...
-
错误消息意味着您正在尝试添加没有相应项目条目的entityType。 (我不知道你的域名或你想要实现的目标,但是这种模式设计对我来说是错误的......) The error message means you are attempting to add an entityType that does not have a corresponding Project entry. (I don't know your domain or what you are trying to achieve, but ...
-
实体框架父 - >子链接和外键约束失败错误(Entity framework parent -> child linking and foreign key constrain failed error)[2021-09-03]
您的SQLite表具有外键限制ON DELETE RESTRICT 。 这意味着如果“设备”中的任何行仍指向您尝试删除的类别,则SQLite数据库将阻止此操作。 要解决此问题,您可以(1)明确地将所有设备更改为其他类别,或(2)将ON DELETE行为更改为其他内容,例如CASCADE或SET NULL 。 请参阅https://www.sqlite.org/foreignkeys.html#fk_actions 如果已使用EF创建表,则将模型配置为使用不同的删除行为。 默认值为restrict。 请参阅h ... -
您需要运行ANALYZE来获取同步的行数。 在pgAdmin中右击表格并选择“维护”。 然后按下桌子上的F5 。 不过,这与唯一的密钥违规没有任何关系。 这意味着您尝试在具有UNIQUE或PRIMARY KEY约束的列中输入的值已经存在于另一行中。 actually i think the problem is not related to postgres at all. It was a combination of simultaneous duplicate ajax calls creating ...
-
该错误消息只是声明表product_template中至少有一行包含product_template列中的值12 但是product_brand表中没有对应的行,其中列id包含值12 Key (product_brand_id)=(12)关联外键的源列,而不是目标列。 The error message simply states that there is at least one row in the table product_template that contains the value 12 i ...
-
现在,如果您尝试删除Employee,它将尝试删除Quote,该Quote的BusinessUnit,然后删除该BusinessUnit的Employees等。 要么使某些关系可选,要么关闭级联约定,如下所示: protected override void OnModelCreating(DbModelBuilder modelBuilder) { // Either entirely modelBuilder.Conventions.Remove所以通过重新启动和重置所有内容来解决问题。 我重新启动postgres,退出服务器和控制台,运行rake db:migrate:reset ,现在我可以插入没有问题的股票。 So the problem was fixed by restarting and resetting everything. I restarted postgres, exited the server and console, ran rake db:migrate:reset and now I can insert stoc ...
实体框架核心,错误Postgres违反外键约束(Entity Framework Core, error Postgres violates foreign key constraint)[2022-06-26]
使用导航属性或保存之前,因此EF Core可以填充主键(仅在保存实体后才会发生)。 public class ProductExtension { public int ProductId { get; set; } public Product Product { get; set; } public string Notes { get; set; } } 现在你可以使用了 Product product = new Product(); product.Name = "Pho ...Postgres ERROR:重复键值违反唯一约束(Postgres ERROR:duplicate key value violates unique constraint)[2022-07-29]
INSERT语句不支持WHERE子句。 运行这个。 create table test ( n integer primary key ); insert into test values (1); insert into test values (2) where true; 由于WHERE子句,这将给您一个语法错误。 但是,SELECT语句可以有一个WHERE子句。 这将在测试表中插入2次。 根据需要多次运行; 它不会引发错误。 (但它最多只插入一行。) insert into test (n) ...postgresql和Delete语句违反了外键约束(postgresql and Delete statement violates foreign key constraint)[2022-04-15]
您应该在外键属性中允许NULL值,并将外键约束定义为ON DELETE SET NULL 。 我引用第5.3章。 PostgreSQL手册中的约束 : 还有另外两个选项:SET NULL和SET DEFAULT。 这些导致引用列分别在删除引用行时设置为空值或默认值。 看起来像这样: table vehicule_uid ( id uuid NOT NULL DEFAULT uuid_generate_v4(), vehicule text REFERENCES vehicule_loan(v ...相关文章
更多- java server怎样和c++ client实现SSL通信??
- 了解 https ssl数字证书,关注 GlobalSign 微信,拿优盘
- 了解 https ssl数字证书,关注 GlobalSign 微信,拿优盘
- Solr JAVA客户端SolrJ 4.9使用示例教程
- 有没有整过webService的, 客户端java.lang.IllegalStateException: Could not initialize Servi
- HttpClient 获取HTTPS证书和忽略证书错误
- Hadoop中的RPC实现——客户端通信组件
- SSDB 客户端支持编程语言
- Storm-源码分析-Topology Submit-Client
- Solr的Scala客户端(scalikesolr)介绍
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)