我正在尝试使用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"
据我所知,该证书将对以下地址有效:
证书很容易在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上。但是我总是得到“此连接不是私有的”。
知道如何在iOS上运行此功能吗?
我一直在努力使iOS接受自签名证书作为唯一的真实来源。我必须通过发行适当的个人证书颁发机构来解决此问题。使iOS信任该权限。然后使用由该机构验证的证书在网站上签名。
我将描述所需的命令,因为它们可以为某人节省几个小时。以下是我们将要做的事情的鸟瞰图。
AUTHORITY-这将成为您签名的所有证书的信任源。您将需要在具有自定义证书的每台机器/电话上安装授权[]
CLIENT
现在用于实际命令:
生成私钥,我们还将使用相同的命令为客户端生成一个:
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验证的开发人员或内部项目。希望这可以节省一些时间。