Spring Boot SSL webapp iOS测试

问题描述 投票:0回答:1

我正在尝试使用Spring Boot创建一个WebApp。

为了创建SSL证书,我发出以下命令:

keytool -alias devssl -keystore devssl.p12 -genkeypair -keyalg RSA -sigalg SHA256withRSA /
-keysize 2048 -storetype PKCS12 -validity 365 -dname "CN=Frankie, OU=Frankie O=Frankie, /
L=City, S=State, C=UK" -ext SAN=DNS:localhost,DNS:blueye,IP:127.0.0.1,IP:10.1.1.2"

据我所知,该证书将对以下地址有效:

  • localhost
  • blueye
  • 127.0.0.1
  • 10.1.1.2

证书很容易在Spring上安装:

server.ssl.key-store-type=PKCS12
server.ssl.key-store=devssl.p12
server.ssl.key-store-password=password
server.ssl.key-alias=devssl
security.require-ssl=true

在Windows中将证书安装在受信任的根证书颁发机构下之后,它也很好用。

我只是无法在iOS下使用它。

我通过电子邮件将证书发送给自己。将其安装在iPhone上。但是我总是得到“此连接不是私有的”。

enter image description here

知道如何在iOS上运行此功能吗?

spring-boot ssl-certificate keytool
1个回答
0
投票

我一直在努力使iOS接受自签名证书作为唯一的真实来源。我必须通过发行适当的个人证书颁发机构来解决此问题。使iOS信任该权限。然后使用由该机构验证的证书在网站上签名。

我将描述所需的命令,因为它们可以为某人节省几个小时。以下是我们将要做的事情的鸟瞰图。

AUTHORITY-这将成为您签名的所有证书的信任源。您将需要在具有自定义证书的每台机器/电话上安装授权[]

  1. 为证书颁发机构(CA)生成私钥
  2. 为证书颁发机构(CA)生成证书
  3. 在Windows上安装证书颁发机构
  4. 在iOS上安装证书颁发机构
  5. CLIENT

-我们可以为网络中的所有项目颁发私钥。这些私钥将由我们自己生成和安装的权限进行验证。
  1. 为客户端生成私钥
  2. 生成证书签名请求(CSR)
  3. 让CA签署CSR从而生成客户端证书
  4. 将客户端证书和CA证书合并到Spring读取的pkcs12文件中

  5. 现在用于实际命令:

生成私钥,我们还将使用相同的命令为客户端生成一个:

openssl genrsa -des3 -out myCA.key 2048

为您的证书颁发机构生成证书。您将被问到几个问题,它们中的任何一个都不重要,它们只会用来为您自己识别证书。

openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.crt

您现在有三个文件。 myCA.key(私钥)以及myCA.pem和myCA.crt是您的证书颁发机构的证书文件。

在Windows上安装:

在Windows上单击myCA.crt文件,然后按照屏幕说明进行操作。然后单击开始->运行->``certmgr.msc`。它将打开Windows证书管理器。您将在“中间证书颁发机构”下找到安装的证书。您需要将该文件拖到“受信任的根证书颁发机构”。

[在iOS上安装:

通过电子邮件将myCA.pem文件发送给自己。使用Apple Mail App在iOS上打开电子邮件。请按照说明进行操作,然后将安装证书。要卸载,您可以转到设置->常规->个人资料。在正确安装iOS之后,您需要执行第二步来信任证书,您必须转到“设置”->“常规”->“关于”->“证书信任设置”,然后启用“对根证书的完全信任”。

您现在在Windows计算机和iOS手机上都安装了本地CA(证书颁发机构)。让我们创建一个网站证书。


为网站生成私钥。

openssl genrsa -des3 -out myWebsite.key 2048

生成CSR(证书签名请求):

openssl req -new -key myWebSite.key -out myWebsite.csr

现在我们有了网站密钥和证书签名请求,我们需要创建一个openssl将用于生成我们的网站证书的配置文件

。使用以下信息创建一个名为myWebsite.ext的文件。您唯一必须确保的是alt名称。您可以同时拥有IP和DNS。请确保输入您的网站将使用的所有替代方法。
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = mywebsite
DNS.3 = mywebsite.local
IP.1 = 10.1.1.3
IP.2 = 127.0.0.1

现在,我们将使用CA证书和私钥以及CSR(证书签名请求)和配置文件来为网站生成适当的证书。由于iOS 13苹果仅允许最多825天的证书使用,因此我们将使用此证书。

openssl x509 -req -in myWebsite.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out myWebsite.crt -days 825 -sha256 -extfile myWebsite.ext

您现在将拥有以下文件:

myCA.key      - certificate authority private key  
myCA.pem      - certificate authority certificate pem format
myCA.crt      - certificate authority certificate crt format
myWebsite.key - website private key  
myWebsite.csr - website certificate sign request  
myWebsite.ext - website config file for openssl sign request  
myWebsite.crt - website certificate crt format

唯一缺少的是将myWebsite.crt转换为p12格式,我们可以使用以下命令进行此操作:

openssl pkcs12 -export -in myCA.crt -inkey myCA.key -in myWebsite.crt -inkey myWebsite.key -name myWebsite -out myWebsite.p12

现在,要使Spring Boot使用此证书,只需打开application.properties文件并确保其具有以下行:

server.ssl.key-store-type=PKCS12
# The path to the keystore containing the certificate, place it src/main/resources
server.ssl.key-store=classpath:heater.p12
# The password used to generate the certificate
server.ssl.key-store-password=PASSWORD-USED
# The alias mapped to the certificate (the -name myWebsite on the last command)
server.ssl.key-alias=myWebsite 
# force SSL 
security.require-ssl=true

然后就在那里。具有适当的SSL验证的开发人员或内部项目。希望这可以节省一些时间。

© www.soinside.com 2019 - 2024. All rights reserved.