android Rocket.chat 上的www.example.com,带有自签名CA

eh57zj3b  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(146)

我正在努力让Rocket.chat部署在一艘船上,它很有可能是用一个自签名的CA完成的。我一直在努力让这个在我的Android手机上工作,还没有机会尝试iOS。
下面是我用来生成CA和证书的脚本。


###################### 

# Become a Certificate Authority

###################### 

# Generate private key

openssl genrsa -des3 -out myCA.key 2048

# Generate root certificate

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

###################### 

# Create CA-signed certs

###################### 

NAME=rocketchat # Use your own domain name

# Generate a private key

openssl genrsa -out $NAME.key 2048

# Create a certificate-signing request

openssl req -new -key $NAME.key -out $NAME.csr

# Create a config file for the extensions

>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
EOF

# Create the signed certificate

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

nginx config包含以下行:

ssl_certificate /etc/nginx/certs/rocketchat.crt;
   ssl_certificate_key /etc/nginx/certs/rocketchat.key;

我在我的开发机器上安装了myCA.pem作为一个受信任的授权机构,它对安全性很满意。

我将PEM转换为DER

openssl x509 -inform PEM -outform DER -in myCA.pem -out CA.crt

并在我的手机(Android)上安装了CA.crt作为受信任的权威机构,但手机上的Chrome会抛出

NET::ERR_CERT_AUTHORITY_INVALID

和火箭。聊天应用程序抛出

java.security.cert.certpathvalidatorexception: trust anchor for certification path not found

我真正想知道的是,是否有人在Android上部署和使用了rocket.chat带有完全自签名CA和证书的www.example.com应用程序,以及他们使用了什么过程来生成CA?因为我已经尝试了很多我在Google上找到的东西,但似乎没有一个能完成这项工作。Android的SSL远远超出了我的经验。
感谢您抽出宝贵时间。

izkcnapc

izkcnapc1#

最终,我使用以下这些人生成的CA实现了这一目标:http://ampledata.org/custom_ca_android.html
有可能不同之处在于

$ openssl req -x509 -new -sha384 -days 30 -nodes \
    -key custom_ca.pk.pem -out custom_ca.cert.pem \
    -subj "/O=Custom CA" \
    -extensions ext \
    -config <(cat <<EOF
    [req]
    distinguished_name=dn
    [dn]
    [ext]
    basicConstraints=CA:TRUE,pathlen:0
    )

但上次我尝试basicConstraints=CA:True时,它在Android和Windows/Chrome上都坏了。
现在我只需要弄清楚什么样的调整,使iOS接受它...

相关问题