this is for AikaPos development logs.
TODOS:

Questions:
目前batch是按照每个record归入单独一个batch来发送的,多发送几次而已,应该对服务器的压力会有点大。但是在优化之前需要先明确几个问题:
  1. 发送batch时,http header怎么设置,里面有两个属性需要额外设置的。目前因为每个batch只有一个记录,我就以该记录的那两个属性来设置的。
  2. 如果分成更少的组的话,如何确定每个不大于256k
需要研究下分单时候的ref问题。
-- Sam 11:17 10/10/2023

 今天学习如何发布一个产品
  1. 先在个schedule里面登记?https://wiki.touchtunes.com/display/IS/calendar/69d88810-9add-4349-b920-d3349cfb144f?calendarName=Production%20Deployment   (因为deploy一般是一个point的ticket,所以
  2. 要在popline里面讨论是什么意思? is it like hi everyone, we are release this ticket to product?
staging-us-xxx.test.cld.touchtunes.com
  1. 1- promote the latest build to stable https://jenkins-nowplay.touchtunes.com/job/promote-fender-api-image-metadata-stable/build?delay=0sec 
  2. 2- deploy to stable context https://jenkins-nowplay.touchtunes.com/job/deploy-fender-api-image-metadata-stable/ this job will also automatically promote the same version to staging 
  3. 3- Deploy it to staging https://jenkins-nowplay.touchtunes.com/job/deploy-fender-api-image-metadata-staging/
建立一个tikcet给dba (在老的jira里面建)
建立一个ticket给IS (在老的jira里面建)

Pre-deployment activities:

Executed this script into documentoDb staging to create the DB, collection and user, please create DBA request ticket to be done in documentDB into prod us 
  1. use imageMetadataDB 
  2. db.createCollection("imageMetadata") 
  3. db.createUser({user:"fender_image_metadata",pwd:"**********",roles:[{role:"readWrite",db:"imageMetadataDB"}]})

create a RES request to run the script...

Create DBAREQ ticket for that
ISREQ ticket to run the script in production

问题:doc不work
dependency不对
拼写错误一堆
没有给方法加security
defination中关于disable的flag必须是false,我们的不知道怎么是true了。
-- Sam 12:01 08/11/2023
怎么回事,怎么程序启动不了了呢?-------------原来是因为headerInfo返回的值被临时改动了一下,为空时强制返回了Certificate A,导致了系统的退出。
我现在的问题是发送transaction不成功,报错说SSL 握手失败,
  1. chatGPT说了原因,我首先怀疑的是那个证书的问题-----------我的证书是根据一个叫“certificateSerialNumber”的数字得到的,而这个数字是从C#程序里抄过来的,然后好像用这个数字会得到一个数组,取那个数组的首个元素,我有点怀疑这个做法,
  2. 现在是时候了解这每一步都是做的啥了
    1. 首先一个问题,java代码存的serialNumber为啥都是数组,一个字母都没有?而且多了5位?这个serialNumber是怎么生成的?
      1. 0A0BE EC2A9 D2554 78AD6 DF312 0AFBB 7036E 17697
      2. 84742  83177   61125  64427  58166 85608  47982   22200 99625
      3. 原来是因为toString时没有用BigInteger.toString(16)方法。
    2. 现在证书的序列号假设是对了,接下来怎么办?这个证书的序列号应该是能用来取出一个证书吧,假设能取出来,那么就是说这个序列号是对的,而证书不行,证书没有被服务器端正确认证对吗?
  3. 还有个事,就是说header里的那两个会变的属性是干啥的?
    1. 请求的数码签名,
      1. 每次请求都会有个不同的数码签名对吧?
      2. 这个签名是用自己的私钥对发送内容进行加密是吗?
      3. 这样的话,如果每次发送的内容一样,那么签名后的内容是不是也应该一样?-----听起来很应该啊,但能确定每次内容是一样的吗?
    2. 证书是啥?
      1. 是一个第三方认证机构发放的文件,里面有持有人的信息,持有人的公钥匙等内容,还有一个这些内容的hash结果的加密(用CA的私钥进行的加密)。
      2. 所有人(sdk)都知道这个第三方机构的公钥,所以所有人都能通过这个第三方的公钥来解密签名得到一个hash值,并对证书文件的明文内容进行hash,然后通过比较二者是否相同来验证这个证书文件真的是被这个权威第三方用其私钥加密过,也就是持有人的身份和公钥等内容是真的。
      3. 如果验证通过,那么所以打开证书后看到的信息都是可靠的。包括被认证的机构名和其公钥,以及任何其他信息。
      4. 程序打开证书后一定要验证被认证的机构名,防止误用了同一个机构的另外一个证书,或者是另外冒名机构的证书。
    3. 但是有证书了,我就能用对方的公钥加密内容进行定向发送了,但是如果是发送给多个客户端,就应该用notification机制(发布内容到一个topic,然后大家自行订阅,发布前用自己的私钥加密有意义,但不大,因为自己的公钥匙一般是公开给所有人的),如果要绝对保密的话,只能保存每个接收者的证书,然后一个一个的获取证书中的公钥,然后一个一个的加密发送,加密发送吧。
    4. 注意,私钥是用来签名的(就是证明这个是我发送的,别人可能看到过,但是没有修改),签名的实质是对内容hash,然后用私钥加密。这种操作,目标是让别人能通过对内容进行hash,并与解密加密过的签名相比较,从而证明这个是我发的,而且别人没有篡改过)

-- Sam 12:27 21/12/2023
现在的问题是
  1. 先试试如何发送一个trsaction,用来知道返回的证书改如何处理,或者为啥那样处理
    1. 先调通程序,改完编译错误
    2. 确认用假数据能发送成功
    3. 修改数据为真实数据
  2. 然后试试发送一个add user
  3. 然后试试删除一个user
  4. 然后试试发送一个report

-- Sam 22:03 20/12/2023
 为啥要发送digital certificate request?-------------为了必须要收到的两个证书:
  1. web-srm的证书,用来加密一个url(就是扫描二维码会得到的url)-奇怪,这个二维码,如果里面内容是一个url,那不是服务器端生成的吗?为啥还要加密发给服务器? 服务器应该已经有了啊?----no, qrcode是客户端生成的。
  2. 还有一个证书是madatory的证书,这个证书两个用途:
    1. 用来 authenticating with the WEB-SRM, ----啥意思,用来让web-srm知道是它发的证书,并且知道到期时间
    2. 用来 generating digital signatures.----这个是公钥的意思吧,用来跟外界证明是我在发送,而且内容完整没有被篡改..
  3. 想要增加或者替换现有的证书(certificate),必须在本地先生成一对公钥私钥。这样才能发送证书的签名请求。所以,
    1. 本地生成公钥私钥对
    2. 发送请求,WEB-SRM生成并分发这个madatory的证书
    3. WEB-SRM同时用madatory的公钥对这个madatory的证书进行签名?---这个什么意思,,
-- Sam 14:55 20/12/2023
 所以第一个请求用"0000-0000-0000"initial value as the device identifier (IDAPPRL header field).SRS will receive a response
from the WEB-SRM including your digital certificate and the digital certificate of the WEB-SRM. In addition, your
SRS will receive an identifier for the device used. From now on this identifier must be entered in the IDAPPRL
header field of all requests from this device.
这里这个digital certificate是啥?是一段字符数组?还是一个文件?---------------A digital certificate is a document that contains many items of information, including a public key, as well as information that identifies its owner. For the mandatory billing project, the digital certificate must contain an identification number.
-- Sam 13:36 20/12/2023
 if your SRS uses the initial value of "0000-0000-0000", it must ask the user the
following question: "Avez-vous un identifiant pour cet appareil (IDAPPRL)?" (Do you have for the identifier for this
device?).If the user answers Non (No), it must send the request to the WEB-SRM with the value "0000-0000-0000".
The WEB-SRM response will contain an identifier for the device used. If the user answers Oui(Yes), the SRS must
store the identifier and display this message: "Veuillez inscrirer votre identifiant d’appareil avant d’effectuer une
requête"(Please enter your device identifier before making a request.).
-- Sam 13:34 20/12/2023
 现在的问题是啥?----------是我还不知道该怎么办,文档大概的看了一下,例子也拷贝到了程序里。
  1. 首先例子没有通,估计是因为用的是Android的例子,有个库是专门为安卓开发的,windows中可能不能直接用。
    1. 先看看各个例子都是干啥的:
    2. 第一个方法名字就是certificate signature request
      1. 有个digital signature不知道是干啥的?-----就是说这个证书只是用来证明是经过认证的,就相当于给你一个号,报这个号,就知道你是被我认证过的,什么时候到期....而签名则是用来证明这个证书是我发的,因为web-mev用它的私钥加密了一下。
      2. 这个方法是要发送一个request出去吗?不太像------这个的确有点变态,这个所谓request,其实只是封装了madatory的各种信息的字符串,这个字符串其实只是request的header的一个字段的值而已。
      3. 那是不是说要reqeust 一个 经过certificate的signature呢?-----------------差不多是这个意思,应该说是经过signature的certificate更准确。
    3. 第二个方法是AddSRSPrivateKeyToDigitalSignature
      1. 这里面提到了一个SRSPrivateKey,是不是是说每个SRS都有一个Privatekey呢?------------这个privateKey应该是指发送request之前SRS生成的那个privatekey吧。
      2. 不可能是每个开发商的所有的产品都是同一个key吧?我的产品经过认证了,我获得了一个key,里面包含了我的产品名称和版本号,这个是SRS的privatekey吗?
      3. 有可能吧,那为什么要把这个privatekey加到certificatedSignature中去呢?
    4. 第三个方法是get a DCs serial number DCS的序列号 是啥,干嘛用的?
    5. 第四个方法是generateQRCodeImage(),这个方法是干什么的?
    6. 第五个方法是ConvertFormatOfDSFromASN_1ToP1363, 啥意思?
  2. 每个device都必须有一个device identifier,但是不生成bill的设备不需要在它上面安装digital certificate------我们是不需要了,出租车需要这个玩意。但是这句话说明我的安装AikaPos的电脑是需要安装一个digital certificate在上面的。
    1. 这个dijital certificate是啥?----从文本中看,是用来identify这个device的,每次发送请求时让webmev知道是谁在发请求。
    2. 是怎么个申请法?
    3. 怎么个安装法?
-- Sam 13:34 20/12/2023

Please click here to login and add comments! || automatically refresh content every seconds