小编tmb*_*gmn的帖子

Java HTTPS客户端证书身份验证

我很新HTTPS/SSL/TLS,我对使用证书进行身份验证时客户端应该提供的内容有点困惑.

我正在编写一个Java客户端,需要为POST特定的数据执行简单的数据URL.那部分工作正常,唯一的问题是应该完成它HTTPS.该HTTPS部分相当容易处理(使用HTTPclient或使用Java的内置HTTPS支持),但我仍然坚持使用客户端证书进行身份验证.我注意到这里已经有一个非常类似的问题,我还没有用我的代码试过(很快就会这么做).我当前的问题是 - 无论我做什么 - Java客户端永远不会发送证书(我可以使用PCAP转储检查).

我想知道客户端在使用证书进行身份验证时应该向服务器提供什么内容(特别是对于Java - 如果这一点很重要)?这是一个JKS文件,还是PKCS#12?什么应该在他们身上; 只是客户端证书,还是密钥?如果是这样,哪个关键?对于所有不同类型的文件,证书类型等存在相当多的混淆.

正如我之前所说,我是新手,HTTPS/SSL/TLS所以我也会欣赏一些背景信息(不必是一篇文章;我会接受好文章的链接).

java ssl https client-certificates

212
推荐指数
6
解决办法
32万
查看次数

jvisualvm没有列出某些Java进程

我想获得某个Java进程的堆转储(可疑的内存泄漏).但是,当我启动jvisualvm工具时,我看不到任何正在运行的Java进程.

我已经谷歌了解了这一点,并且已经发现了一些文章说你必须使用与启动jvisualvm工具相同的JDK来运行Java进程,以便它能够看到它们.但是,据我所知,情况已经如此.我在本地做所有事情(我可以​​远程访问机器).

需要考虑的几件事:

  1. 这些进程在防火墙的Windows 2008服务器上运行
  2. 使用JDK 可执行文件的重命名版本运行进程java.exe
  3. 据我所知,进程正在使用1.6.0_18 JDK运行
  4. 其中一个正在运行的进程启动RMI注册表

我正在等待服务器的虚拟副本,所以我可以搞砸它(这是一个生产服务器).但与此同时; 关于为什么我在jvisualvm(或jconsole)中看不到任何进程的任何想法?

java process jvisualvm

37
推荐指数
2
解决办法
2万
查看次数

Tomcat HTTPS密钥库证书

使用SSL和Tomcat进入另一个问题:我已经配置了一个密钥库,其中包含密钥和证书(我希望向连接到该站点的客户端提供的服务器证书).我为信任库做了同样的事情(我将需要客户端身份验证).

我现在的问题是,当我连接到通过HTTPS我的Tomcat实例,介绍给我(服务器证书)证书不是我的实际服务器证书,而是重点在JKS密钥库.使用-Djavax.net.debug = ssl显示它为客户端身份验证提供了正确的CA,但没有提供正确的服务器证书.

adding as trusted cert:
  Subject: CN=A
  Issuer:  CN=A
  Algorithm: RSA; Serial number: -
  Valid from Tue Nov 10 14:48:31 CET 2009 until Mon Feb 08 14:48:31 CET 2010

adding as trusted cert:
  Subject: X
  Issuer:  X
  Algorithm: RSA; Serial number: -
  Valid from Wed Jan 19 01:00:00 CET 2005 until Mon Jan 19 00:59:59 CET 2015

我用占位符取代了真正的价值观.A =服务器的域名(但在这种情况下,由于某种原因,这是密钥而不是证书).X = VeriSign CA(这应该是正确的).我有一个现有的证书,我想用它来呈现给客户端,我使用keytool将其导入JKS密钥库.

Tomcat连接器配置:

Connector port="444" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"       
keystoreFile="conf/ssl/keystore.jks"
keystorePass="xx"
keyAlias="testkey" …

java ssl https tomcat keystore

19
推荐指数
1
解决办法
3万
查看次数

Java多线程文件下载性能

最近我在一个需要比以前更多的IO交互的项目上工作,我觉得我想要查看常规库(特别是Commons IO)并解决更深入的IO问题.

作为学术测试,我决定实现一个基本的,多线程的HTTP下载器.这个想法很简单:提供一个下载URL,代码将下载该文件.为了提高下载速度,文件被分块并且每个块同时下载(使用HTTP Range: bytes=x-x头)以使用尽可能多的带宽.

我有一个工作原型,但你可能已经猜到了,它并不完全理想.目前我手动启动3个"下载程序"线程,每个线程下载文件的1/3.这些线程使用通用的同步"文件编写器"实例来实际将文件写入磁盘.完成所有线程后,"文件编写器"完成,任何打开的流都关闭.一些代码片段可以给你一个想法:

线程启动:

ExecutorService downloadExecutor = Executors.newFixedThreadPool(3);
...
downloadExecutor.execute(new Downloader(fileWriter, download, start1, end1));
downloadExecutor.execute(new Downloader(fileWriter, download, start2, end2));
downloadExecutor.execute(new Downloader(fileWriter, download, start3, end3));
Run Code Online (Sandbox Code Playgroud)

每个"下载程序"线程下载一个块(缓冲)并使用"文件编写器"写入磁盘:

int bytesRead = 0;
byte[] buffer = new byte[1024*1024];
InputStream inStream = entity.getContent();
long seekOffset = chunkStart;
while ((bytesRead = inStream.read(buffer)) != -1)
{
    fileWriter.write(buffer, bytesRead, seekOffset);
    seekOffset += bytesRead;
}
Run Code Online (Sandbox Code Playgroud)

"文件写入器"使用RandomAccessFileto seek()write()磁盘块写入磁盘:

public synchronized void write(byte[] bytes, int len, long start) throws IOException
{
      output.seek(start); …
Run Code Online (Sandbox Code Playgroud)

java io performance multithreading http

18
推荐指数
1
解决办法
9120
查看次数

jQuery文档就绪函数

以下jQuery代码段的最终结果是否相同?

小片1:

$(function() { alert('test!'); });
Run Code Online (Sandbox Code Playgroud)

摘录2:

$(document).ready(function() { alert('test!'); });
Run Code Online (Sandbox Code Playgroud)

换句话说,$(function(){})只是简写$(document).ready(function() { });

我问的原因是因为我们在使用jQuery和jQuery UI构建的小应用程序中看到了一些奇怪的问题.有时,通过单击按钮执行表单提交操作时,浏览器窗口将冻结.我们仍然可以使用底层浏览器窗口(启动弹出窗口的窗口),直到我们在那里执行某些操作.用户只能通过强制关闭浏览器(显然是Internet Explorer)继续.我们怀疑这与Acrobat PDF插件有关,但我只是在这里查看所有角度,因为我发现这个问题似乎表现出类似的行为.

jquery jquery-ui document-ready

14
推荐指数
3
解决办法
3万
查看次数

在模板中播放2.0访问请求

我有以下简化的模板设置:

  • 主要(模板)
    • 主页
    • 细节

现在,当用户登录时,会username设置会话属性,以便我可以确定用户是否已登录.为了帮助我弄清楚用户是否登录,我有以下会话助手对象:

object SessionHelper {
  val sessionKey = "username"

  def authenticated(implicit request: RequestHeader) = {
    request.session.get(sessionKey).exists(_ => true)
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以在采用implicit请求对象的模板中使用,例如:

(implicit request: play.api.mvc.RequestHeader)
...
@if(SessionHelper.authenticated) {
    <strong>Authenticated!</strong>
}
...
Run Code Online (Sandbox Code Playgroud)

因为 - 据我所知 - 这是在模板中获取隐式变量的唯一方法,这意味着在渲染视图的任何地方,我都需要显式"定义"隐式请求变量.例如:

def index = Action { implicit request =>
  Ok(views.html.index(myStuff))
}
Run Code Online (Sandbox Code Playgroud)

没有该implicit request =>语句,它不会编译.虽然这有点尴尬,只要我留在任何"子视图"(例如主页或详细信息)中,这很好,因为对于每个视图我都有一个控制器方法,因此也可以访问隐式RequestHeader实例.但是,当我需要访问我的模板(例如Main)中的会话时,这不起作用,因为它永远不会被控制器显式呈现.

我没有立即看到一种方法来访问模板中的会话,而快速谷歌除了几个关于相同主题的问题之外没有透露任何其他问题.有任何想法吗?

更新:似乎这与此问题有些相关.

session templates playframework-2.0

12
推荐指数
1
解决办法
7441
查看次数

如何使用Spring的ThreadPoolExecutorFactoryBean工厂bean

我希望能够将一个ExecutorService实例注入到我的Spring服务中,Spring API建议将其ThreadPoolExecutorFactoryBean用于此目的.很简单的问题; 我该如何使用它ThreadPoolExecutorFactoryBean创建一个ExecutorService我可以连接到我的其他服务?

我觉得他是一个完全白痴问他的问题,但我似乎无法理解这一点.

java spring factory

7
推荐指数
3
解决办法
1万
查看次数

Spring/Hibernate实体管理Web界面/ UI

我们有一个服务器应用程序,它通过许多协议将特定模型和基于该模型构建的服务集暴露给特定的客户端UI.这是一种服务器应用程序,一旦设置,就不需要太多的手动干预.但是,偶尔(特别是在首次部署解决方案时),必须进行某些模型对象的创建和链接.

此解决方案基于Spring,Spring MVC和Hibernate(以及其他内容)构建,使用JPA注释来处理ORM.

我的问题:有没有人知道一个框架,它允许我快速设置(理想情况下纯粹通过配置)一个Web界面来管理(CRUD)实体?这不一定是花哨的,也不需要花哨的安全性(我可以从应用程序服务器中处理安全性).然而,它需要能够处理实体之间的复杂关系(集合映射,枚举等).

例如:应用程序有一个实体User,它具有与之关联的典型Role实体(每个用户有1个Role).现在,在没有从头创建我们自己的Web层的情况下定义它的唯一方法是:

  1. 创建SQL语句以导入新用户(及其角色)
  2. 有一些脚本(例如使用Ant),它使用Spring/Hibernate配置关联并保存一个新的Role()和User()对象

显然,如果我们有一个基本的Web界面(我们不需要自己开发)和服务器一起处理这些任务(创建,更新,删除......)会更容易.

java spring hibernate scaffolding

6
推荐指数
1
解决办法
3915
查看次数

.NET WCF序列化问题

情况:系统A应该公开SOAP 1.2 Web服务以供系统B调用.为了让A知道消息的样子,B向A发送了一个描述消息内容的XSD.使用.NET xsd.exe工具生成存根,在此周围创建了简单的Web服务并完成了工作.

然而; 当B调用此Web服务时,A拒绝将SOAP/XML内容序列化为生成的代理类实例.我意识到这必须归结为在系统A上的Web服务端定义序列化的方式,但是无法准确找到出错的地方.

来自B的消息是什么样的(匿名) - 失败:

<ns2:Set_Out xmlns:ns2="http://a.a/1.0" xmlns:ns1="http://b.b/1.0" xmlns:ns0="http://c.c">
<Context xmlns="">
    <Foo>test</Foo>
    <Bar>test</Bar>
    ...
</Context>
Run Code Online (Sandbox Code Playgroud)

来自测试客户端(基于WSDL)的测试消息是什么样的 - 工作:

<Set_Out xmlns="http://a.a/1.0">
<Context xmlns:b="http://schemas.datacontract.org/2004/07/x.x" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <b:Foo>TEST</b:Foo>
    <b:Bar>test</b:Bar>
    ...
</Context>
Run Code Online (Sandbox Code Playgroud)

当A构建的Web服务从B接收消息时,它根本不会序列化消息.代理的对象(例如Context)是null.当它从测试客户端收到消息时,一切都正确生成.

代理上的序列化属性:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://a.a/1.0")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://a.a/1.0", IsNullable=false)]
[System.ServiceModel.MessageContract]
public partial class Set_Out {
    [System.Xml.Serialization.XmlElementAttribute(Namespace="http://a.a/1.0", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    [System.ServiceModel.MessageBodyMember(Order=0)]
    public ContextType Context;
    ...

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://a.a/1.0")]
public partial class ContextType {
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Foo;
Run Code Online (Sandbox Code Playgroud)

我发现奇怪的事情:

  1. 在为此服务生成WSDL时,WSDL会将自己的名称空间添加到WSDL定义中(xmlns:b例如,在上面的示例中).
  2. WSDL不尊重unqualified …

.net c# wcf xml-serialization

5
推荐指数
1
解决办法
5196
查看次数

在Spring MVC 3.0中使用下划线绑定请求参数

请考虑以下要求:请求参数必须使用Spring MVC 3.0绑定到对象.请求参数包含下划线(例如http://myurl:80/x?param_one=1&param_two=2).这些参数应绑定到以下对象:

class MyObject {
    private Integer paramOne;
    private Integer paramTwo;

    ...
}
Run Code Online (Sandbox Code Playgroud)

你会怎么做呢?

重要提示:请考虑可能存在大量此类参数和对象,并且在包含下划线的对象上定义setter方法并不是一种好的做法.

java data-binding spring spring-mvc

5
推荐指数
1
解决办法
2071
查看次数