3

我正在尝试设置从我的设备到服务器的 MDM Check-in 连接。在我的 .mobileconfig 中,我已经输入了来自凭证的身份,我从钥匙串访问和使用 .p12 文件生成它。对于服务器和签入 URL - https://address.To.Server:9769/mdm/

我在启用 SSL 的 tomcat 中托管我的服务器,我使用 keytools 生成 JKS,-“keytool -importkeystore -srckeystore client-cert.p12 -srcstoretype PKCS12 -destkeystore keystore.jks”

* client-cert.p12 与我放入 mobileconfig 身份的 .p12 文件相同。

如果我没记错的话,从 IOS 到服务器的所有请求都使用 HTTP PUT 方法。我已经尝试直接从 chrome 浏览器访问我的服务器并且没有问题。我相信这是证书问题,但我不知道发生了什么。

当我尝试从 safari 安装配置文件时,我得到了所有这些错误。

>Notice: (Error) MC: Connection to <server> failed with error: NSError:
Desc   : The server certificate for <server> is invalid.
US Desc: The server certificate for <server> is invalid.
Domain : MCHTTPTransactionErrorDomain
Code   : 23002
Type   : MCFatalError
Params : (
"<server>"
)

>Notice: (Error) MC: Cannot install MDM Mobile Device Management. Error: NSError:
Desc   : The payload Mobile Device Management could not be installed.
Sugg   : The server certificate for <server> is invalid.
US Desc: The payload Mobile Device Management could not be installed.
US Sugg: The server certificate for <server> is invalid.
Domain : MCInstallationErrorDomain
Code   : 4001
Type   : MCFatalError
Params : (
"Mobile Device Management"
)

>Desc   : The profile SilverlakeMDM could not be installed.
Sugg   : The payload Mobile Device Management could not be installed.
US Desc: The profile SilverlakeMDM could not be installed.
US Sugg: The payload Mobile Device Management could notbe installed.
Domain : MCProfileErrorDomain
Code   : 1009
Type   : MCFatalError
Params : (
SilverlakeMDM
)

以下来自我的服务器控制台:

>httpsConnector.receiver.02 ERROR DefaultSystemExceptionStrategy:300 logException - Caught exception in Exception Strategy: Received close_notify during handshake
javax.net.ssl.SSLException: Received close_notify during handshake
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1868)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1821)
        at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1922)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1059)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294)
        at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:848)
        at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
        at sun.security.ssl.AppInputStream.read(AppInputStream.java:69)
        at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
        at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
        at org.mule.transport.http.HttpServerConnection.readLine(HttpServerConnection.java:219)
        at org.mule.transport.http.HttpServerConnection.readRequest(HttpServerConnection.java:185)
        at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:155)
        at org.mule.work.WorkerContext.run(WorkerContext.java:311)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
4

2 回答 2

1

可能的问题是,

  1. 首先检查您的 CN。是的,它应该与域匹配。如果您在本地机器上测试它,请确保在那里添加 IP。

  2. 如果 SSL 证书是自签名的,请确保您的 SSL 证书是使用根 CA 签名的。签名者应明确指示为根 CA。

  3. 如果您使用的是 RA 证书,它还需要由根 CA 签名。

  4. 将签入和服务器 url 实现为 PUT 方法。如果这没有简单地实现,它会给出这个错误。

由于第 4 点,我也遇到了您的问题,并设法解决了这个问题。

于 2013-09-24T11:44:01.547 回答
0

很可能正是它提到的问题:“服务器证书无效。”。

可能是,它不是根证书(我不确定 iOS 会如何喜欢它),或者您在此证书中使用了一些不寻常的东西,您的桌面支持,但 iOS 设备不支持。

尝试从 iOS 设备上的 Safari 访问您的服务器,看看它会说什么。

另外,我假设您使用预先安装的服务器证书创建了配置文件。转到首选项并查看此配置文件。该证书应显示“受信任”之类的内容。

于 2013-08-29T21:08:01.477 回答