首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何避免在tomcat的server.xml中以明文形式存储密码?DataSource的资源定义?

在Tomcat中,为了避免在server.xml文件中以明文形式存储密码,可以使用外部密码存储机制。这里我们将介绍一种基于Java KeyStore的方法。

  1. 首先,创建一个Java KeyStore文件,例如:keystore.jks
代码语言:txt
复制
keytool -genkey -alias tomcat -storetype JKS -keyalg RSA -keysize 2048 -keystore keystore.jks
  1. 将密码添加到KeyStore中。
代码语言:txt
复制
keytool -genseckey -alias dbpassword -storetype JKS -keyalg AES -keysize 128 -keystore keystore.jks
  1. 将生成的KeyStore文件复制到Tomcat的安装目录下的conf文件夹中。
  2. server.xml文件中,使用CredentialHandler元素引用密码。
代码语言:xml
复制
<CredentialHandler className="org.apache.tomcat.util.buf.DigesterCredentialHandler"
                    algorithm="AES"
                    keyStoreFile="conf/keystore.jks"
                    keyStoreType="JKS"
                    keyAlias="dbpassword"
                    keyPass="your_key_pass" />
  1. context.xml文件中,使用Credential元素引用密码。
代码语言:xml
复制
<Credential
    className="org.apache.tomcat.util.buf.DigesterCredentialHandler"
    algorithm="AES"
    keyStoreFile="conf/keystore.jks"
    keyStoreType="JKS"
    keyAlias="dbpassword"
    keyPass="your_key_pass" />
  1. server.xml文件中,使用Credential元素引用密码。
代码语言:xml<Resource name="jdbc/yourDataSource"
复制
          auth="Container"
          type="javax.sql.DataSource"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/yourDatabase"
          username="yourUsername"
          password="yourPassword"
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
          initialSize="10"
          maxActive="100"
          maxIdle="20"
          minIdle="15"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true"
          validationQuery="SELECT 1"
          testOnBorrow="true"
          testWhileIdle="true"
          timeBetweenEvictionRunsMillis="30000"
          minEvictableIdleTimeMillis="60000"
          jmxEnabled="true"
          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;
                              org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" />

通过以上步骤,您可以在Tomcat中为数据源定义一个资源,并在不明文存储密码的情况下使用它。

推荐的腾讯云相关产品:

  • 云服务器:提供可靠的服务器计算资源,支持云服务器自动备份和恢复。
  • 数据库:提供MySQL、PostgreSQL、MongoDB等多种数据库服务,支持数据库的自动备份和恢复。
  • 对象存储:提供可靠的存储服务,支持多种存储类型和文件访问方式。
  • 内容分发网络:提供全球加速服务,支持多种内容分发方式。
  • 云硬盘:提供可靠的块存储服务,支持多种磁盘类型和文件系统。
  • 负载均衡:提供可靠的负载均衡服务,支持多种负载均衡算法和协议。
  • 云硬盘:提供可靠的块存储服务,支持多种磁盘类型和文件系统。
  • 虚拟私有云:提供可靠的虚拟网络服务,支持多种网络拓扑和访问控制。

推荐的产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 程序员的25大Tomcat面试问题及答案

    bio:传统的Java I/O操作,同步且阻塞IO。 maxThreads=“150”//Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。 minSpareThreads=“25”—Tomcat初始化时创建的线程数。默认值4。如果当前没有空闲线程,且没有超过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由此值设置。 maxSpareThreads=“75”–一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值50。一旦创建的线程超过此数值,Tomcat会关闭不再需要的线程。线程数可以大致上用 “同时在线人数每秒用户操作次数系统平均操作时间” 来计算。 acceptCount=“100”----指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。如果当前可用线程数为0,则将请求放入处理队列中。这个值限定了请求队列的大小,超过这个数值的请求将不予处理。 connectionTimeout=“20000” --网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

    01

    java学习与应用(4.4)--Tomcat、servlet等

    常用的web服务器软件:webLogic(oracle),webSphere(IBM),JBOSS(JBOSS公司)(以上三种支持所有JavaEE规范,企业版共13项规范),Tomcat(Apache基金,支持少量JavaEE规范) Tomcat:下载,解压使用。其中webapps存放网页,work存放运行数据,bin存放执行文件(shutdown.bat可关闭)。没有配置JAVA_HOME可能不能启动startup.bat。logs中存放日志信息记录一些错误等。netstat -ano查看端口使用的PID。conf配置目录的server.xml定义了tomcat的端口使用。 将代码打包为war包,放置到webapps下,会自动解压缩,和自动删除。server.xml的host标签下,定义Context自闭和标签中,定义docBase项目路径和path虚拟目录的属性便于访问。 常用的热部署并防止修改错误server.xml内容:方式为:conf下Catania下localhost下创建任意名称的xml文件,写入Context标签和属性,替换server.xml中的路径部署。 ROOT为项目根目录,WEB_INF为动态项目目录(web.xml为核心配置文件,classes目录存放字节码,lib存放jar包),其他为静态目录文件。 run->configuration ->Tomcat Server ->local->Application server中将tomcat集成到idea中。Java Enerprise -> Web Application,create server.xml勾选。等等配置。 idea直接修改可以使用热部署,不用重启服务器,进行代码调试,文件创建。idea也可以修改虚拟路径,方便使用。

    01
    领券