当前位置: 首页 > 知识库问答 >
问题:

从HTTPS中的Node JS调用JavaREST API(在Tomcat上)

刘明朗
2023-03-14

我涉足了Node JS。我需要Node JS(使用“请求”模块)通过HTTPS调用Java REST API。

正如在给定URL中解释的那样,我创建了一个CA文件(ca.key,ca.pem),服务器的证书(server1.key,server1.pem)

现在,我想从我的Node JS客户端访问在Apache Tomcat上运行的JAVA REST API。那么现在我如何导入我的节点JS服务器密钥(server1.key,server1.pem)

共有1个答案

边桐
2023-03-14

下面是我通过带有自签名证书的HTTPS进行NodeJS到Tomcat通信所遵循的方法。我在网上看到许多解决方案都喜欢使process.env.NODE_TLS_REJECT_UNAUTHORIZED="0";rejectUnizord/stratSSL为false但我认为这些可能不是正确测试的有效解决方案。

这也将消除像DEPTH_ZERO_SELF_SIGNED_CERT这样的错误

向Tomcat点头:

第一步:证书

>

  • 创建CA证书,自我签名

    openssl genrsa-des3-outca.key2048 openssl req-new-x509-days 365-keyca.key-outca.crt//在证书生成过程中提供有效密码

    修改openssl文件夹中的openssl.cfg/openssl.cnf文件如下(一般可以在openssl/bin文件夹中找到)。(这是将主机名/IP地址添加到证书中的'subjectAltName'

    a)确保分配了'v3_req'

    req_extensions=v3_req

    b)然后在'v3_req'下追加主机名如下:

    subjectAltName=@alt_names[alt_names]DNS.1=

    创建服务器密钥csr,

    openssl genrsa-out服务器。密钥1024 openssl req-新建-密钥服务器。密钥输出服务器。csr-config openssl。cfg(给tomcat服务器

    将服务器的证书文件和私钥转换为PKCS#12

    openssl pkcs12-导出证书。p12-inkey服务器。密钥服务器。crt-certfile ca.crt//在运行期间提供有效密码。p12代

    通过“代理”属性在NodeJS的“请求”调用中传递“ca.crt”:

    var ca=fs.readFileSync("certs/30112015/ca.crt"); var agent=new https. Agent({ca: ca}); var opts={agent: agent}; request(opts, function(err,响应,正文){//响应处理程序代码 } );

    将PKCS#12转换为Java密钥库文件(使用Java“keytool”)

    keytool-importkeystore-srckeystore证书。p12-srcstoretype pkcs12-destkeystore密钥库。jks-deststoretype jks

    将CA证书导入密钥库

    keytool-import-alias root-keystore密钥库。jks-trustcacerts-file ca.crt

    第2步:配置Tomcat服务器

    >

  • 复制密钥库。jks文件到apache-tomcat-8.0.21/conf目录
  • 在服务器中添加以下连接器。xml

  •  类似资料:
    • 当我尝试从AWS控制台运行lambda函数时,代码工作正常。由于我想仅在添加了新的Dynamo DB记录时运行特定代码,因此我想从dymanoDB流插入事件中运行lambda函数。我尝试了以下代码,似乎lambda没有调用。 serverless.yml中的权限 dynamoDB流代码 我将非常感谢你的指导。

    • 我想在Java WebApp中使用Tomcat7从ajax调用Servlet。 只有当我使用整个url“http://localhost:8080/webappname/vservlet”时,它才起作用,但只在我的PC中起作用。然而,我必须将它部署在具有商业域名的服务器上,这显然不同于“localhost”。 拜托,谁能告诉我是否有一种方法可以用相对URL来寻址servlet?因为如果我使用像'h

    • 问题内容: 我需要对同一域的安全(HTTPS)URL进行异步调用。 当前,该页面正在使用常规HTTP(非安全)。 换句话说:这是使用HTTPS在同一域中调用URL。 在将此调用切换到HTTPS之前,我结束了实现服务器端代理以允许跨域AJAX调用,但是现在我面临着相同的源策略,因为HTTP和HTTPS也被认为是不同的源。因此,该代理不可用。 简介:在这种情况下,如何进行跨域,异步POST请求? 各种

    • 我已经在我的 Web 应用程序中配置了 SSL。我已经按照所需的步骤在我的 Tomcat 中安装了证书。 我一直关注的导师是https://www.mulesoft.com/tcat/tomcat-security 我已经强制使用 https over http,这意味着任何对 http 的请求都将转发到 https。我在服务器中进行了以下更改.xml 查看更多:https://www.mules

    • 问题内容: 我的API有ExpressJS路由,我想从NodeJS内调用它 在我的 ./routes/api.js 文件中 因此,如果我想从前端调用其所有查找内容,但是我需要从NodeJS脚本的另一个方面进行调用,而不必在第二个位置再次重新定义整个函数 我曾尝试从内部使用HTTP模块,但出现“ ECONNREFUSED”错误 我了解Express背后的想法是创建路线,但是如何在内部调用它们 问题答

    • 我在nodejs中运行一个python脚本。但是我想保持开放,然后从nodejs调用def函数几次。我怎么能做到这一点。 ################################################################################### 测验派克