【发布时间】:2020-11-14 17:28:01
【问题描述】:
我有以下代码,如果我通过控制台运行它就可以正常工作
public static void main(String[] args) throws MalformedURLException {
// TODO Auto-generated method stub
try {
String jSonData = "xxx";
String nombreCertificadoTicket = "CERTIFICADO.p12";
String passCertificadoTicket = "PASSWORD";
String pathCertificado = "/opt/tomcat/properties/"+nombreCertificadoTicket;
String url_crearTicket = "URL SERVICE";
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", pathCertificado);
System.setProperty("javax.net.ssl.keyStorePassword", passCertificadoTicket);
URL urlCrearTicket = new URL(url_crearTicket);
HttpURLConnection conexionCrearTicket = (HttpURLConnection) urlCrearTicket.openConnection();
conexionCrearTicket.setDoOutput(true);
conexionCrearTicket.setRequestMethod("POST");
conexionCrearTicket.setRequestProperty("content-type", "application/json");
OutputStream os = conexionCrearTicket.getOutputStream();
os.write(jSonData.getBytes());
os.flush();
System.out.println("CODE :"+conexionCrearTicket.getResponseCode());
我通过consol执行这个类,它执行并返回代码ok
但我将完全相同的代码放在休息服务中,它返回 401 未经授权的错误,因此我认为它没有正确放置安全证书
@Path("PruebaCertificado")
public class PruebaCertificado {
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public RespuestaWs recibe(InputStream entrada) {
RespuestaWs respuesta = new RespuestaWs();
try {
String jSonData = "";
String jSonData = "xxx";
String nombreCertificadoTicket = "CERTIFICADO.p12";
String passCertificadoTicket = "PASSWORD";
String pathCertificado = "/opt/tomcat/properties/"+nombreCertificadoTicket;
String url_crearTicket = "URL SERVICE";
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", pathCertificado);
System.setProperty("javax.net.ssl.keyStorePassword", passCertificadoTicket);
URL urlCrearTicket = new URL(url_crearTicket);
HttpURLConnection conexionCrearTicket = (HttpURLConnection) urlCrearTicket.openConnection();
conexionCrearTicket.setDoOutput(true);
conexionCrearTicket.setRequestMethod("POST");
conexionCrearTicket.setRequestProperty("content-type", "application/json");
OutputStream os = conexionCrearTicket.getOutputStream();
os.write(jSonData.getBytes());
os.flush();
System.out.println("CODE :"+conexionCrearTicket.getResponseCode());
我需要在 tomcat 中进行一些配置吗?
环境有 apache tomcat 8 y java 1.8
【问题讨论】:
-
尝试把它放在一个带有@Configuration注解的类中。但我认为最好将 HttpUrlConnection 与 SSLContext 一起使用并在那里设置您的密钥库而不是设置属性。