Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
96aa6981
M
milvus
项目概览
milvus
/
milvus
大约 1 年 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
96aa6981
编写于
5月 09, 2022
作者:
E
exia
提交者:
GitHub
5月 09, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
proxy support tls document (#16829)
Signed-off-by:
N
xiyichan
<
2863768433@qq.com
>
上级
04161bca
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
447 addition
and
0 deletion
+447
-0
docs/user_guides/tls_proxy.md
docs/user_guides/tls_proxy.md
+447
-0
未找到文件。
docs/user_guides/tls_proxy.md
0 → 100644
浏览文件 @
96aa6981
# How to enable use TLS proxy
Milvus proxy uses TLS mutual authentication.
## How to create your own certificate.
### 1. Make sure openssl is installed.
```
shell
openssl version
# OpenSSL 1.1.1f 31 Mar 2020
```
If openssl is not installed.
```
shell
sudo
apt
install
openssl
```
### 2. Create openssl.cnf and gen.sh
```
shell
mkdir
cert
&&
cd
cert
touch
openssl.cnf gen.sh
```
Copy the configuration below into the file. You can modify gen.ssh configurations.
CommonName is a required configuration. The client needs to specify the server name when connecting. The server name is common name.
Other configurations can be filled in as required.
<details><summary><code>
openssl.cnf
</code></summary>
```
ini
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
# This definition stops the following lines choking if HOME isn't
# defined.
HOME
=
.
RANDFILE
=
$ENV::HOME/.rnd
# Extra OBJECT IDENTIFIER info:
#oid_file = $ENV::HOME/.oid
oid_section
=
new_oids
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
# Policies used by the TSA examples.
tsa_policy1
=
1.2.3.4.1
tsa_policy2
=
1.2.3.4.5.6
tsa_policy3
=
1.2.3.4.5.7
####################################################################
[ ca ]
default_ca
=
CA_default # The default ca section
####################################################################
[ CA_default ]
dir
=
./demoCA # Where everything is kept
certs
=
$dir/certs # Where the issued certs are kept
crl_dir
=
$dir/crl # Where the issued crl are kept
database
=
$dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir
=
$dir/newcerts # default place for new certs.
certificate
=
$dir/cacert.pem # The CA certificate
serial
=
$dir/serial # The current serial number
crlnumber
=
$dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl
=
$dir/crl.pem # The current CRL
private_key
=
$dir/private/cakey.pem# The private key
RANDFILE
=
$dir/private/.rand # private random number file
x509_extensions
=
usr_cert # The extentions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt
=
ca_default # Subject Name options
cert_opt
=
ca_default # Certificate field options
# Extension copying option: use with caution.
copy_extensions
=
copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days
=
365 # how long to certify for
default_crl_days
=
30 # how long before next CRL
default_md
=
default # use public key default MD
preserve
=
no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy
=
policy_match
# For the CA policy
[ policy_match ]
countryName
=
match
stateOrProvinceName
=
match
organizationName
=
match
organizationalUnitName
=
optional
commonName
=
supplied
emailAddress
=
optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName
=
optional
stateOrProvinceName
=
optional
localityName
=
optional
organizationName
=
optional
organizationalUnitName
=
optional
commonName
=
supplied
emailAddress
=
optional
####################################################################
[ req ]
default_bits
=
2048
default_keyfile
=
privkey.pem
distinguished_name
=
req_distinguished_name
attributes
=
req_attributes
x509_extensions
=
v3_ca # The extentions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask
=
utf8only
req_extensions
=
v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName
=
Country Name (2 letter code)
countryName_default
=
AU
countryName_min
=
2
countryName_max
=
2
stateOrProvinceName
=
State or Province Name (full name)
stateOrProvinceName_default
=
Some-State
localityName
=
Locality Name (eg, city)
0.organizationName
=
Organization Name (eg, company)
0.organizationName_default
=
Internet Widgits Pty Ltd
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName
=
Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName
=
Common Name (e.g. server FQDN or YOUR name)
commonName_max
=
64
emailAddress
=
Email Address
emailAddress_max
=
64
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword
=
A challenge password
challengePassword_min
=
4
challengePassword_max
=
20
unstructuredName
=
An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints
=
CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment
=
"OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier
=
hash
authorityKeyIdentifier
=
keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This is required for TSA certificates.
# extendedKeyUsage = critical,timeStamping
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints
=
CA:FALSE
keyUsage
=
nonRepudiation, digitalSignature, keyEncipherment
subjectAltName
=
@alt_names
[ alt_names ]
DNS.1
=
localhost
DNS.2
=
*.ronething.cn
DNS.3
=
*.ronething.com
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier
=
hash
authorityKeyIdentifier
=
keyid:always,issuer
# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints
=
CA:true
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
# Some might want this also
# nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier
=
keyid:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints
=
CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
# nsCertType = server
# For an object signing certificate this would be used.
# nsCertType = objsign
# For normal client use this is typical
# nsCertType = client, email
# and for everything including object signing:
# nsCertType = client, email, objsign
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# This will be displayed in Netscape's comment listbox.
nsComment
=
"OpenSSL Generated Certificate"
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier
=
hash
authorityKeyIdentifier
=
keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo
=
critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
####################################################################
[ tsa ]
default_tsa
=
tsa_config1 # the default TSA section
[ tsa_config1 ]
# These are used by the TSA reply generation only.
dir
=
./demoCA # TSA root directory
serial
=
$dir/tsaserial # The current serial number (mandatory)
crypto_device
=
builtin # OpenSSL engine to use for signing
signer_cert
=
$dir/tsacert.pem # The TSA signing certificate
# (optional)
certs
=
$dir/cacert.pem # Certificate chain to include in reply
# (optional)
signer_key
=
$dir/private/tsakey.pem # The TSA private key (optional)
default_policy
=
tsa_policy1 # Policy if request did not specify it
# (optional)
other_policies
=
tsa_policy2, tsa_policy3 # acceptable policies (optional)
digests
=
md5, sha1 # Acceptable message digests (mandatory)
accuracy
=
secs:1, millisecs:500, microsecs:100 # (optional)
clock_precision_digits
=
0 # number of digits after dot. (optional)
ordering
=
yes # Is ordering defined for timestamps?
# (optional, default: no)
tsa_name
=
yes # Must the TSA name be included in the reply?
# (optional, default: no)
ess_cert_id_chain
=
no # Must the ESS cert id chain be included?
#
(optional,
default:
no)
```
</details>
<details><summary><code>
gen.sh
</code></summary>
```
shell
#!/usr/bin/env sh
# your variables
Country
=
"CN"
State
=
"Shanghai"
Location
=
"Shanghai"
Organization
=
"milvus"
Organizational
=
"milvus"
CommonName
=
"localhost"
echo
"generate ca.key"
openssl genrsa
-out
ca.key 2048
echo
"generate ca.pem"
openssl req
-new
-x509
-key
ca.key
-out
ca.pem
-days
3650
-subj
"/C=
$Country
/ST=
$State
/L=
$Location
/O=
$Organization
/OU=
$Organizational
/CN=
$CommonName
"
echo
"generate server SAN certificate"
openssl genpkey
-algorithm
RSA
-out
server.key
openssl req
-new
-nodes
-key
server.key
-out
server5.csr
-days
3650
-subj
"/C=
$Country
/O=
$Organization
/OU=
$Organizational
/CN=
$CommonName
"
-config
./openssl.cnf
-extensions
v3_req
openssl x509
-req
-days
3650
-in
server.csr
-out
server.pem
-CA
ca.pem
-CAkey
ca.key
-CAcreateserial
-extfile
./openssl.cnf
-extensions
v3_req
echo
"generate client SAN certificate"
openssl genpkey
-algorithm
RSA
-out
client.key
openssl req
-new
-nodes
-key
client.key
-out
client.csr
-days
3650
-subj
"/C=
$Country
/O=
$Organization
/OU=
$Organizational
/CN=
$CommonName
"
-config
./openssl.cnf
-extensions
v3_req
openssl x509
-req
-days
3650
-in
client.csr
-out
client.pem
-CA
ca.pem
-CAkey
ca.key
-CAcreateserial
-extfile
./openssl.cnf
-extensions
v3_req
```
</details>
### 3. Run gen.sh to create certificate.
```
shell
chmod
+x gen.sh
./gen.sh
```
They will creat 9 files about ca.key, ca.pem, ca.srl, server.key, server.pem, server.csr, client.key, client.pem, client.csr.
## Modify config
Modify tlsEnabled to true and the file path in config/milvus.yaml.
Server need server.pem, server.key and ca.pem. Client need client.pem, client.key, ca.pem.
```
yaml
tls
:
serverPemPath
:
configs/cert/server.pem
serverKeyPath
:
configs/cert/server.key
caPemPath
:
configs/cert/ca.pem
common
:
security
:
tlsEnabled
:
true
```
## How does the client use tls to connect to milvus
Please refer to
[
example_tls.py
](
https://github.com/milvus-io/pymilvus/blob/master/examples/example_tls.py
)
.
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录