自签名证书配置服务端Https

1、Keytool生成自签名证书

Keytool是一个Java数据证书的管理工具,安装JDK后自带。

1.1 生成证书server.jks

keytool -genkey -alias server -keyalg RSA -keysize 2048 -validity 3650 -keystore server.jks -storepass 123456 -storetype PKCS12

回车后第一个参数:“您的名字与姓氏是什么[CN]?”的值为最终https使用的服务器ip或域名,其他值根据实际情况填写。
其中:-alias为别名,-storepass为密码,-validity为证书有效时间,默认365天。

证书格式转换(jks->pfx)server.pfx

keytool -importkeystore -srckeystore server.jks -destkeystore server.pfx -srcstoretype JKS -deststoretype PKCS12

1.2 配置tomcat

复制server.jks到tomcat目录,如"tomcat/conf",编辑server.xml:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
 maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/server.jks" type="RSA"  certificateKeystorePassword="123456"/>
    </SSLHostConfig>
</Connector>

或者

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="conf/server.jks"
               keystorePass="123456" clientAuth="false" sslProtocol="TLS">
</Connector>

1.3 配置nodejs

复制server.pfx到nodejs工程目录,编辑nodejs文件,

在头部引入https:

const https = require('https');

在文件最后添加以下内容:

const options = {
  pfx: fs.readFileSync('./server.pfx'),
  passphrase:'123456'
};
const server = https.createServer(options, app).listen(8443, function(err){
   console.log("https listening on port: 8443");
});

1.4 配置SpringBoot

复制server.jks到SpringBoot工程resources目录,配置application.properties文件,增加以下内容:

server.ssl.key-alias=server
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:server.jks

2、Openssl生成自签名证书

2.1 生成证书

生成私钥server.key:

openssl genrsa -out server.key 2048

生成公钥server.csr:

openssl req -new -key server.key -out server.csr

回车按照提示输入,Common Name的值为最终https使用的服务器ip或域名,其他值根据实际情况填写。

生成自签证书(证书默认过期时间365天,此处设置为3650天)server.crt

openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

证书导出为server.p12:

openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12 

2.2 配置tomcat

复制server.key和server.crt到tomcat目录,如"tomcat/conf",编辑server.xml:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/server.key" certificateFile="conf/server.crt"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

2.3 配置nodejs

复制server.key和server.crt到nodejs工程目录,编辑nodejs文件,

在头部引入https:

const https = require('https');

在文件最后添加以下内容:

const options = {
  key: fs.readFileSync('./server.key'),
  cert: fs.readFileSync('./server.crt')
};
const server = https.createServer(options, app).listen(8443, function(err){
   console.log("https listening on port: 8443");
});

2.4 配置SpringBoot

复制server.p12到SpringBoot工程resources目录,配置application.properties文件,增加以下内容:

server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:server.p12

3、Openssl生成自签名V3证书 

3.1生成自签名CA证书

(1)生成私钥

openssl genrsa -out ca.key 2048

  (2)生成证书

根证书是整个信任链的起点,如果一个证书的每一级签发者向上一直到根证书都是可信的,那个就可以认为这个证书也是可信的。有了这个根证书,就可以用它来给其他实体签发实体证书了。注意CN的值,更改为实际值

openssl req -x509 -new -nodes -days 3650 -subj "/CN=gv.k8s.service" -key ca.key -out ca.crt

3.2生成服务证书

  (1)生成私钥

openssl genrsa -out server.key 2048

  (2)生成签名证书CSR

openssl req -new -subj "/CN=gv.k8s.service" -key server.key -out server.csr

  (3) 生成一个x509 v3扩展文件

cat >v3.ext<<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=gv.k8s.service
EOF

    (4)生成签名证书

openssl x509 -req -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt

 3.3创建k8s secret

kubectl create secret tls gv-ingress-secret --key server.key --cert server.crt -n gv-service
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值